sys 模块主要负责与 Python 解释器进行交互,该模块提供了一系列用于控制 Python 运行环境的函数和变量。
之前我们说过 os 模块,该模块与 sys 模块从名称上看着好像有点类似,实际上它们之间是没有什么关系的,os 模块主要负责与操作系统进行交互。
我们先整体看一下 sys 模块都包含哪些内容,如下所示:
>>> import sys >>> dir(sys) ['__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_debugmallocstats', '_enablelegacywindowsfsencoding', '_getframe', '_git', '_home', '_xoptions', 'api_version', 'argv', 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_wrapper', 'getallocatedblocks', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'set_asyncgen_hooks', 'set_coroutine_wrapper', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'version', 'version_info', 'warnoptions', 'winver']
对于一些相对常用的变量和函数,我们下面再来具体看一下。
argv
返回传递给 Python 脚本的命令行参数列表。看下示例:
import sys if __name__ == '__main__': args = sys.argv print(args) print(args[1])
上面文件名为:test.py,我们在控制台使用命令:python test.py 123 abc
执行一下,执行结果如下:
['test.py', '123', 'abc'] 123
version
返回 Python 解释器的版本信息。
winver
返回 Python 解释器主版号。
platform
返回操作系统平台名称。
path
返回模块的搜索路径列表。
maxsize
返回支持的最大整数值。
maxunicode
返回支持的最大 Unicode 值。
copyright
返回 Python 版权信息。
modules
以字典类型返回系统导入的模块。
byteorder
返回本地字节规则的指示器。
executable
返回 Python 解释器所在路径。
import sys print(sys.version) print(sys.winver) print(sys.platform) print(sys.path) print(sys.maxsize) print(sys.maxunicode) print(sys.copyright) print(sys.modules) print(sys.byteorder) print(sys.executable)
stdout
标准输出。看下示例:
import sys # 下面两行代码等价 sys.stdout.write('Hi' + '\n') print('Hi')
stdin
标准输入。看下示例:
import sys s1 = input() s2 = sys.stdin.readline() print(s1) print(s2)
stderr
错误输出。看下示例:
import sys sys.stderr.write('this is a error message')
exit()
退出当前程序。看下示例:
import sys print('Hi') sys.exit() print('Jhon')