pythonのsysモジュール

21906 ワード

pythonバージョン:Python 2.7.6:sysはpythonがモジュールを持っている.import文を使用してsysモジュールを入力します.import sysを実行するとpythonはsysにあります.path変数にリストされているディレクトリにsysモジュールファイルが見つかります.次に、このモジュールのプライマリブロックの文を実行して初期化し、モジュールを使用できます.
2:sysモジュールの一般的な関数はdir()メソッドでモジュールで使用可能なメソッドを表示することができる.結果は以下のように、私が使ったことがないことが多いので、自分が使った方法を簡単に紹介します.
$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', '_mercurial', '_multiarch', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'long_info', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', 'pydebug', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']

(1) sys.argvは、プログラム外部からプログラムへのパラメータsysの伝達を実現する.argv変数は、コマンドラインパラメータを含む文字列リストであり、コマンドラインプログラムによりパラメータを伝達する.ここで、スクリプトの名前は常にsysである.argvリストの最初のパラメータ.
(2) sys.pathには、入力モジュールのディレクトリ名のリストが含まれます.指定したモジュール検索パスの文字列セットを取得し、作成したモジュールを取得したパスの下に置くことで、プログラム内のimport時に正しく見つけることができます.importでmoduleをインポートnameの場合はsysによる.pathのパスでmoduleを検索します.name、モジュールの追加パスをカスタマイズすることもできます.sys.path.append(「カスタムモジュールパス」)
(3) sys.exit([arg])プログラムの中間の終了、arg=0が正常終了である通常はメインプログラムの末尾まで実行する、解釈器は自動的に終了するが、途中でプログラムを終了する必要がある場合はsysを呼び出すことができる.exit関数は、オプションの整数パラメータを持って呼び出すプログラムに戻り、メインプログラムでsysをキャプチャできることを示します.exitの呼び出し.(0は正常終了、その他は異常)もちろん文字列パラメータを用いて、エラーが成功しなかったエラーメッセージを表すこともできます.
(4) sys.modules sys.modulesはpythonが起動するとメモリにロードされるグローバル辞書です.プログラマが新しいモジュールをインポートするたびにsys.modulesはモジュールを自動的に記録します.モジュールを2回目に再インポートすると、pythonは辞書で直接検索され、プログラムの実行速度が速くなります.辞書が持つすべての方法を持っています
(5) sys.getdefaultencoding()/sys.setdefaultencoding()/sys.getfilesystemencoding() sys.getdefaultencoding()は、システムの現在の符号化を取得します.一般的にデフォルトはasciiです.sys.setdefaultencoding()システムのデフォルト符号化を設定し、dir(sys)を実行するとこの方法は表示されません.解釈器で実行するかどうかは、reload(sys)を先に実行し、setdefaultencoding(‘utf 8’)を実行すると、システムのデフォルト符号化がutf 8に設定されます.(システムのデフォルト符号化の設定を参照)sys.getfilesystemencoding()取得ファイルシステムは符号化方式を用いてWindowsで「mbcs」、macで「utf-8」を返す
(6) sys.stdin, sys.stdout, sys.stderr stdin、stdout、およびstderr変数は、標準I/Oストリームに対応するストリームオブジェクトを含む.出力をよりよく制御する必要があり、printがあなたの要求を満たすことができない場合は、それらが必要です.それらを置き換えることもできます.この場合、出力にリダイレクトしたり、他のデバイスに入力したり、非標準的な方法で処理したりすることができます.
(7) sys.platformは現在のシステムプラットフォームを取得する.例えば、win 32、Linuxなどです.
3:例(1)sys.argv sys.path
$ cat sys-test.py
 #!/usr/bin/python
import sys

print 'The command line arguments are:'
for i in sys.argv:
    print i

print '

The PYTHONPATH is'
, sys.path, '
'

実行結果:
$ python sys-test.py my name is ubuntu 
The command line arguments are:
sys-test.py
my
name
is
ubuntu

The PYTHONPATH is ['/work/python-practice', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']

(2) sys.exit
 #!/usr/bin/python
import sys

def exitfunc(value):
    print (value)
    sys.exit(0)

print("hello")

try:
    sys.exit(90)
except SystemExit as value:
    exitfunc(value)   

print("come?")

実行結果:
hello
90

プログラムはまずhelloを印刷し、exit(90)を実行し、異常を投げて90をvaluesに渡し、valuesは伝達関数で実行し、90プログラムを印刷して終了する.後ろの「come?」終了するので印刷されない.このときexitfunc関数のsysをexit(0)を削除すると、プログラムは出力「come?」まで実行されます.
(3) sys.modules sys.modules.keys()は、インポートされたすべてのモジュールのリストを返しますkeysはモジュール名valuesはモジュールmodulesの戻りパスです
 #!/usr/bin/python
import sys

print(sys.modules.keys())
print("**************************************************************************")
print(sys.modules.values())
print("**************************************************************************")
print(sys.modules["os"])

    : 
['copy_reg', 'sre_compile', '_sre', 'encodings', 'site', '__builtin__', 'sysconfig', '__main__', 'encodings.encodings', 'abc', 'posixpath', '_weakrefset', 'errno', 'encodings.codecs', 'sre_constants', 're', '_abcoll', 'types', '_codecs', 'encodings.__builtin__', '_warnings', 'genericpath', 'stat', 'zipimport', '_sysconfigdata', 'warnings', 'UserDict', 'encodings.ascii', 'sys', 'codecs', '_sysconfigdata_nd', 'os.path', 'sitecustomize', 'signal', 'traceback', 'linecache', 'posix', 'encodings.aliases', 'exceptions', 'sre_parse', 'os', '_weakref']
*******************************************************************************
[<module 'copy_reg' from '/usr/lib/python2.7/copy_reg.pyc'>, <module 'sre_compile' from '/usr/lib/python2.7/sre_compile.pyc'>, <module '_sre' (built-in)>, <module 'encodings' from '/usr/lib/python2.7/encodings/__init__.pyc'>, <module 'site' from '/usr/lib/python2.7/site.pyc'>, <module '__builtin__' (built-in)>, <module 'sysconfig' from '/usr/lib/python2.7/sysconfig.pyc'>, <module '__main__' from 'sys-test1.py'>, None, <module 'abc' from '/usr/lib/python2.7/abc.pyc'>, <module 'posixpath' from '/usr/lib/python2.7/posixpath.pyc'>, <module '_weakrefset' from '/usr/lib/python2.7/_weakrefset.pyc'>, <module 'errno' (built-in)>, None, <module 'sre_constants' from '/usr/lib/python2.7/sre_constants.pyc'>, <module 're' from '/usr/lib/python2.7/re.pyc'>, <module '_abcoll' from '/usr/lib/python2.7/_abcoll.pyc'>, <module 'types' from '/usr/lib/python2.7/types.pyc'>, <module '_codecs' (built-in)>, None, <module '_warnings' (built-in)>, <module 'genericpath' from '/usr/lib/python2.7/genericpath.pyc'>, <module 'stat' from '/usr/lib/python2.7/stat.pyc'>, <module 'zipimport' (built-in)>, <module '_sysconfigdata' from '/usr/lib/python2.7/_sysconfigdata.pyc'>, <module 'warnings' from '/usr/lib/python2.7/warnings.pyc'>, <module 'UserDict' from '/usr/lib/python2.7/UserDict.pyc'>, <module 'encodings.ascii' from '/usr/lib/python2.7/encodings/ascii.pyc'>, <module 'sys' (built-in)>, <module 'codecs' from '/usr/lib/python2.7/codecs.pyc'>, <module '_sysconfigdata_nd' from '/usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.pyc'>, <module 'posixpath' from '/usr/lib/python2.7/posixpath.pyc'>, <module 'sitecustomize' from '/usr/lib/python2.7/sitecustomize.pyc'>, <module 'signal' (built-in)>, <module 'traceback' from '/usr/lib/python2.7/traceback.pyc'>, <module 'linecache' from '/usr/lib/python2.7/linecache.pyc'>, <module 'posix' (built-in)>, <module 'encodings.aliases' from '/usr/lib/python2.7/encodings/aliases.pyc'>, <module 'exceptions' (built-in)>, <module 'sre_parse' from '/usr/lib/python2.7/sre_parse.pyc'>, <module 'os' from '/usr/lib/python2.7/os.pyc'>, <module '_weakref' (built-in)>]
*******************************************************************************
<module 'os' from '/usr/lib/python2.7/os.pyc'>

(4) sys.stdin/sys.stdout/sys.stderr stdin,stdout,stderrはPythonでファイル属性オブジェクトであり、python起動時にshell環境の標準入力、出力、エラーに自動的に関連する.pythonプログラムのshellにおけるI/Oリダイレクトはshellによって提供され、python自体とは関係ない.pythonプログラムの内部でstdin,stdout,stderrの読み書き操作を内部オブジェクトにリダイレクトする.
    
#!/usr/bin/python
import sys
#print('Hi, %s!' %input('Please enter your name: ')) python3.*   input
print('Hi, %s!' %raw_input('Please enter your name: ')) #python2.*   raw_input
    :
Please enter your name: er
Hi, er!
   :
 #!/usr/bin/python
import sys
print('Please enter your name:')
name=sys.stdin.readline()[:-1]
print('Hi, %s!' %name)
    
print('Hello World!
'
) : #!/usr/bin/python import sys sys.stdout.write('output resule is good!
'
) #!/usr/bin/python import sys for i in (sys.stdin, sys.stdout, sys.stderr): print(i) : python sys-test1.py <open file '', mode 'r' at 0x7fa4e630f0c0> <open file '', mode 'w' at 0x7fa4e630f150> <open file '', mode 'w' at 0x7fa4e630f1e0>