为获取各种设置信息,CPython 解析器会扫描命令行与环境。
调用 Python 时,可以指定下列任意选项:
python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]
最常见的用例是启动时执行脚本:
python myscript.py
接口选项
解释器接口类似于 UNIX shell,但提供了额外的调用方法:
- 用连接到 tty 设备的标准输入调用时,会提示输入并执行命令,输入 EOF (文件结束符,UNIX 中按 Ctrl-D,Windows 中按 Ctrl-Z, Enter)时终止。
- 用文件名参数或以标准输入文件调用时,读取,并执行该脚本文件。
- 用目录名参数调用时,从该目录读取、执行适当名称的脚本。
- 用 -c command
调用时,执行 command 表示的 Python 语句。command 可以包含用换行符分隔的多条语句。注意,前导空白字符在 Python 语句中非常重要! - 用 -m module-name
调用时,在 Python 模块路径中查找指定的模块,并将其作为脚本执行。
非交互模式下,先解析全部输入,再执行。
接口选项会终结解释器读入的选项列表,所有后续参数都在 sys.argv
里 — 注意,首个元素,即下标为零的元素(sys.argv[0]
)是表示程序来源的字符串。-c
执行 command 中的 Python 代码。command 可以是一条语句,也可以是用换行符分隔的多条语句,其中,前导空白字符与普通模块代码中的作用一样。
使用此选项时,sys.argv
的首个元素为 "-c"
,并会把当前目录加入至 sys.path
开头(让该目录中的模块作为顶层模块导入)。使用 command
参数会引发 审计事件 cpython.run_command
。-m
在 sys.path
中搜索指定模块,并以 __main__
模块执行其内容。该参数是 模块名,请勿输入文件扩展名(.py
)。模块名应为有效的绝对 Python 模块名,但本实现对此不作强制要求(例如,允许使用含连字符 -
的名称)。包名称(包括命名空间包)也允许使用。使用包名称而不是普通模块名时,解释器把 .__main__
作为主模块执行。此行为特意被设计为与作为脚本参数传递给解释器的目录和 zip 文件的处理方式类似。
注解
此选项不适用于内置模块和以 C 编写的扩展模块,因为它们并没有对应的 Python 模块文件。 但是它仍然适用于预编译的模块,即使没有可用的初始源文件。
如果给出此选项,sys.argv
的首个元素将为模块文件的完整路径 (在定位模块文件期间,首个元素将设为 "-m"
)。 与 -c
选项一样,当前目录将被加入 sys.path
的开头。-I
选项可用来在隔离模式下运行脚本,此模式中 sys.path
既不包含当前目录也不包含用户的 site-packages 目录。 所有 PYTHON*
环境变量也会被忽略。许多标准库模块都包含在执行时,以脚本方式调用的代码。例如 timeit
模块:
python -m timeit -s 'setup here' 'benchmarked code here'
python -m timeit -h # for details
使用 module-name
参数会引发 审计事件 cpython.run_module
。
服务器租用托管,机房租用托管,主机租用托管,https://www.e1idc.com