Python sys模块详解:sys.argv参数传递实战指南
本文深入解析Python sys模块,重点讲解sys.argv如何从外部接收命令行参数。通过终端执行脚本并传入参数的实例,展示sys.argv作为列表的特性及其在自动化脚本中的应用,帮助开发者掌握Python与操作系统交互的核心技巧。
sys模块概述与核心功能
sys模块与os模块类似,主要用于调用系统资源。其功能丰富多样,本文将介绍sys模块中一些简单且常用的函数,重点聚焦于非功能性函数与属性,以揭示Python背后一些较少见的事件机制。
sys模块中的常用方法
| 函数名 | 参数 | 介绍 | 举例 | 返回值 |
|---|---|---|---|---|
| modules(属性) | 无 | 将Python启动时加载的模块集合起来并返回一个列表 | sys.modules | 列表 |
| path(属性) | 无 | 返回当前Py的环境路径(当前py环境可以导入内置、第三方包与函数的所在路径) | sys.path | 列表 |
| exit(函数) | arg | 退出程序(执行十行代码,若在第二行插入sys.exit,则后面的代码不会执行) | sys.exit(0) | 无 |
| getdefaultencoding | 无 | 获取当前系统级别的编码格式(比如 utf-8) | sys.getdefaultencoding() | 字符串 |
| platform(函数) | 无 | 获取当前系统平台(如windows、Mac、linux) | sys.platform() | 字符串 |
| version(属性) | 无 | 获取当前 Python 的版本 | sys.version | 字符串 |
| argv(属性) | *args | 获取程序外部的参数,返回值是一个列表,实际开发中很常用的一个功能 | sys.argv | 列表 |
具体示例如下:
import sys
modules = sys.modules # 将 sys 模块的 modules 属性 赋值给 modules 并打印输出 Python启动时加载的模块集合
print(modules)
# sys.exit(0) # 取消注释该行代码,下方所有的代码将不再执行
path = sys.path
print(path) # 将 sys 模块的 path 属性 赋值给 path 并打印输出 python 环境可以导入内置、第三方包与函数的所在路径
code = sys.getdefaultencoding() # 将 sys 模块 的 getdefaultencoding()函数 赋值给 code 并打印输出当前系统的编码[utf-8]
print(code)
# >>> 执行结果如下:
# >>> utf-8
print(sys.platform) # 获取当前系统平台(如windows、Mac、linux)
# >>> 执行结果如下:
# >>> darwin
print(sys.version) # 获取当前 Python 的版本
# >>> 执行结果如下:
# >>> 3.8.7 (v3.8.7:6503f05dd5, Dec 21 2020, 12:45:15)
# >>> [Clang 6.0 (clang-600.0.57)]
深入解析sys.argv参数机制
接下来重点讲解sys.argv。前文提到,argv用于获取程序外部的参数,其返回值类型为列表。
此前我一直在Python解释器和IDE中运行代码,试图从结果中推导其用途,但始终未获明确结论。查阅网络资料后,发现多为转载复制,常引用《简明Python教程》中冗长的代码示例,声称“看懂即明白”,但我仍感到困惑,仅知sys.argv[0]表示当前脚本的文件路径。经过大量尝试与多方请教,才真正理解其原理。此处记录并分享,希望能为同样在探索中的同学提供不同视角的启发。
sys.argv本质上是连接程序与外部参数的桥梁。这里的“外部”是关键所在,因此仅从代码内部解释其作用往往难以理解。我们需要先在终端执行脚本,并从外部传入参数(可包含多个),因此sys.argv返回的是一个列表。这意味着sys.argv可视为列表对象,通过索引[ ]提取元素。其第一个元素为程序本身,后续元素依次对应外部传入的参数。
首先观察sys.argv的返回值内容:
import sys
print(sys.argv)
# >>> 执行结果如下:
# >>> ['/Users/username/PycharmProjects/XXXXX/XXXXX/animal/package_sys.py']
# >>> 从执行结果可以看出 其输出的就是当前路径下的当前脚本本身,也就可以理解为 'sys.argv' 其实就是运行自身的脚本文件
# >>> 我们从 '外部' 运行该脚本文件的时候,需要传入参数(可以是多个)
随后将上述代码修改为如下形式:
import sys
print(sys.argv[0], sys.argv[1])
# >>> 接下来我们进入 Terminal 终端 利用 python 执行 该脚本文件,并传入 测试参数,结果如下图。

sys.argv实战应用示例
为更清晰演示sys.argv属性,我们对前文演示的sys常用函数与属性进行改造。示例如下:
import sys
command = sys.argv[1]
if command == 'modules':
modules = sys.modules
print(modules)
elif command == 'path':
path = sys.path
print(path)
elif command == 'encoding':
code = sys.getdefaultencoding()
print(code)
elif command == 'platform':
print(sys.platform)
elif command == 'version':
print(sys.version)
else:
print('该命令未识别')
接着在Terminal终端中执行该脚本,效果如下图所示:

至此,关于Python sys模块使用教程的详细介绍已分享完毕。如需了解更多Python sys模块相关内容,请搜索本站过往文章或继续浏览下文。感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









