【Python小知识】sys.argv[1]

本文介绍了Python内置的sys模块,特别是其argv参数的作用,以及如何通过不同方式调用脚本并获取传参。还展示了如何利用sys.argv动态获取脚本路径和传递参数。

1、sys是什么?

sys是python的一个【标准库】,是【system】的简写,封装了一些与系统相关的信息和接口。

2、argv是什么?

argv是【argument variable】的缩写,意为“参数变量”,这个参数变量是一个List列表。
argv[0] 是“被调用脚本文件的相对路径或者绝对路径”,例如:
这里的有一个test.py脚本文件:

# test.py
import sys
a=sys.argv[0]
print(a)

它的绝对路径为“F:\PythonCode\test.py”,在控制台这就有两种命令调用方式:
(1)绝对路径调用

python F:\PythonCode\test.py

得到的输出结果为F:\PythonCode\test.py,为被调用脚本文件的绝对路径。
(2)相对路径调用
进入到“F:\PythonCode”目录下,进行命令调用:

python test.py

得到的输出结果为test.py,为被调用脚本文件的相对路径。

argv[1]和以后的元素是“自己传入的参数”,例如:
(1)将上述test.py脚本的sys.argv[0]改为sys.argv[1]:

a=sys.argv[1]

使用相对路径调用的方式,

python test.py I

得到的输出结果为I
(2)将上述test.py脚本的sys.argv[0]改为sys.argv[2:]:

a=sys.argv[2:]

使用相对路径调用的方式,

python test.py I am cn

得到的输出结果为am cn

参考来源:
python函数学习之sys.arg[1]
Python中argv[]的用法简明解释

Python 中使用 `QApplication(sys.argv)` 是创建 PyQt 或 PySide GUI 应用程序的标准做法。`sys.argv` 是一个包含命令行参数的列表,这些参数在程序启动时由用户在命令行中输入。将 `sys.argv` 传递给 `QApplication` 的构造函数,可以让 Qt 框架处理与命令行相关的配置选项,从而影响 GUI 的行为或初始化过程。 ### `sys.argv` 的作用 `sys.argv` 是 Python 提供的一个标准模块 `sys` 中的列表变量,它保存了从命令行传入脚本的所有参数。其中,`sys.argv[0]` 是脚本本身的文件名,而后续的元素则是用户在命令行中提供的参数。例如,如果运行命令 `python myapp.py --style fusion`,那么 `sys.argv` 的内容将是 `['myapp.py', '--style', 'fusion']`。将 `sys.argv` 传递给 `QApplication` 可以让 Qt 自动识别并处理这些参数,例如设置应用程序的样式、字体、调试选项等[^1]。 ### 正确使用 `QApplication(sys.argv)` 的方式 创建 `QApplication` 实例时,必须将 `sys.argv` 作为参数传入。以下是一个基本的 PyQt5 应用程序结构示例: ```python import sys from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout app = QApplication(sys.argv) window = QWidget() layout = QVBoxLayout() label = QLabel("Hello, PyQt5!") layout.addWidget(label) window.setLayout(layout) window.setWindowTitle("PyQt5 Example") window.show() sys.exit(app.exec_()) ``` 在这个例子中,`QApplication(sys.argv)` 确保了应用程序能够解析并响应命令行参数。例如,若用户运行 `python app.py --style fusion`,Qt 会自动将应用程序的样式设置为 Fusion 风格[^1]。 ### 常见问题与注意事项 1. **缺少 `sys.argv` 导致的错误** 如果不传入 `sys.argv`,某些依赖于命令行参数的功能将无法正常工作。例如,尝试通过命令行指定样式或禁用 GUI 模式时会失败。虽然程序仍能运行,但失去了通过命令行进行配置的能力[^1]。 2. **未导入 `sys` 模块** 若未导入 `sys` 模块而直接使用 `sys.argv`,Python 会抛出 `NameError`。确保在使用前导入 `sys` 模块。 3. **错误地修改 `sys.argv`** 在某些脚本中,开发者可能手动修改 `sys.argv` 来过滤掉某些参数。如果操作不当,可能会导致 Qt 无法识别正确的参数列表。建议在修改前保留原始列表或明确了解参数用途[^3]。 4. **多平台兼容性问题** 在某些平台上(如 macOS 或嵌入式系统),命令行参数可能会影响窗口系统的集成方式。确保测试不同平台下的行为,尤其是在使用特定图形后端或禁用 GUI 模式时[^2]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值