Python 命令行参数 + 环境变量
一、argparse 基本用法
argparse用于接收命令行参数(args)- 先定义参数规则,再调用
parse_args()自动解析 args = parser.parse_args()会自动读取sys.argv并匹配规则- 最终得到一个对象
args,通过.属性名直接使用参数
最简示例
python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("input")
args = parser.parse_args()
print(args.input)
bash
python test.py hello
二、位置参数(必选参数)
- 靠位置区分,顺序不能乱
- 不需要加
--或- - 多个位置参数 → 完全按传入顺序匹配
多位置参数示例
bash
parser.add_argument("name")
parser.add_argument("age")
parser.add_argument("city")
bash
python test.py zouwei 25 beijing
对应关系:
- 第 1 个值 →
args.name - 第 2 个值 →
args.age - 第 3 个值 →
args.city
三、可选参数
- 以
--开头,如--mode - 可设置短别名
-m - 顺序不固定,必须放在所有位置参数之后
- 可传可不传,可设置默认值
default=
定义示例
bash
parser.add_argument("--mode", "-m", default="test")
parser.add_argument("--count", "-c", type=int, default=1)
合法运行方式
bash
python test.py myfile --mode run -c 10
python test.py myfile -m run -c 10
python test.py myfile -c 10 -m run
四、位置参数与可选参数的位置关系
- 所有位置参数必须写在最前面,且顺序固定
- 可选参数必须写在位置参数之后
- 可选参数之间顺序可任意调换
- 不能把可选参数插在多个位置参数中间
✅ 正确
bash
python test.py name age city --mode a -c b
bash
python test.py name --mode a age city
五、Python 读取系统环境变量
- 使用内置库
os - 推荐:
os.getenv("VAR", 默认值),不存在不报错 - 也可使用
os.environ["VAR"],但不存在会抛异常 - 环境变量由操作系统传入,Python 只是读取
示例
import os
nickname = os.getenv("zouwei_nickname", "default_name")
print(nickname)
六、Linux 临时环境变量语法
VAR=value python3 test.py
- 这是 Shell 语法,不是 Python 语法
- 作用:仅给当前这次运行的程序设置临时环境变量
- 程序运行结束后变量自动销毁,不污染系统
- Python 中可通过
os.getenv()直接获取
运行:
zouwei_nickname=xwhking python3 test.py
七、完整综合示例(可直接运行)
python
import argparse
import os
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="args + env demo")
# 位置参数
parser.add_argument("username")
parser.add_argument("uid")
# 可选参数
parser.add_argument("--role", "-r", default="guest")
args = parser.parse_args()
# 读取环境变量
nickname = os.getenv("zouwei_nickname", "nonick")
print("==== 位置参数 ====")
print("username:", args.username)
print("uid:", args.uid)
print("==== 可选参数 ====")
print("role:", args.role)
print("==== 环境变量 ====")
print("nickname:", nickname)
运行命令:
bash
zouwei_nickname=xwhking python3 test.py zouwei 10086 -r admin
八、核心总结
- 位置参数靠顺序,必写在前,不能乱序
- 可选参数靠名字(--xxx),顺序随意,必须在后
-x是--xxx的缩写,功能完全一样parse_args()自动解析命令行,无需手动处理字符串- 环境变量由系统传入,
os.getenv()安全读取 VAR=value python xxx.py是 Linux 临时传环境变量标准用法