Python 命令行参数 + 环境变量

Python 命令行参数 + 环境变量

一、argparse 基本用法

  1. argparse 用于接收命令行参数(args)
  2. 先定义参数规则,再调用 parse_args() 自动解析
  3. args = parser.parse_args() 会自动读取 sys.argv 并匹配规则
  4. 最终得到一个对象 args,通过 .属性名 直接使用参数

最简示例

python 复制代码
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("input")
args = parser.parse_args()

print(args.input)
bash 复制代码
python test.py hello

二、位置参数(必选参数)

  1. 靠位置区分,顺序不能乱
  2. 不需要加 ---
  3. 多个位置参数 → 完全按传入顺序匹配

多位置参数示例

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

三、可选参数

  1. -- 开头,如 --mode
  2. 可设置短别名 -m
  3. 顺序不固定,必须放在所有位置参数之后
  4. 可传可不传,可设置默认值 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

四、位置参数与可选参数的位置关系

  1. 所有位置参数必须写在最前面,且顺序固定
  2. 可选参数必须写在位置参数之后
  3. 可选参数之间顺序可任意调换
  4. 不能把可选参数插在多个位置参数中间

✅ 正确

bash 复制代码
python test.py name age city --mode a -c b
bash 复制代码
python test.py name --mode a age city

五、Python 读取系统环境变量

  1. 使用内置库 os
  2. 推荐:os.getenv("VAR", 默认值),不存在不报错
  3. 也可使用 os.environ["VAR"],但不存在会抛异常
  4. 环境变量由操作系统传入,Python 只是读取

示例

复制代码
import os

nickname = os.getenv("zouwei_nickname", "default_name")
print(nickname)

六、Linux 临时环境变量语法

复制代码
VAR=value python3 test.py
  1. 这是 Shell 语法,不是 Python 语法
  2. 作用:仅给当前这次运行的程序设置临时环境变量
  3. 程序运行结束后变量自动销毁,不污染系统
  4. 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

八、核心总结

  1. 位置参数靠顺序,必写在前,不能乱序
  2. 可选参数靠名字(--xxx),顺序随意,必须在后
  3. -x--xxx 的缩写,功能完全一样
  4. parse_args() 自动解析命令行,无需手动处理字符串
  5. 环境变量由系统传入,os.getenv() 安全读取
  6. VAR=value python xxx.py 是 Linux 临时传环境变量标准用法
相关推荐
老歌老听老掉牙1 小时前
空间点到平面的距离:几何意义与计算方法
python·平面
m0_591364731 小时前
SQL提升开发效率_使用CTE重构嵌套子查询逻辑
jvm·数据库·python
2401_831419441 小时前
JavaScript 中实现基于分组的前端产品筛选功能
jvm·数据库·python
曲幽1 小时前
初探:用 FastAPI 搭建你的第一个 AI Agent 接口
python·ai·llm·agent·fastapi·web·chat·httpx·ollama
电商API_180079052471 小时前
淘宝商品评论数据获取指南|批量自动化|api应用
java·爬虫·spring·性能优化·自动化
xiaoduo AI1 小时前
智能客服机器人能精准预判用户疑问提前主动应答吗?能大幅缩短客户咨询沟通时长吗?
运维·服务器·机器人
yexuhgu1 小时前
CSS实现盒子阴影扩散效果_调整box-shadow的模糊半径
jvm·数据库·python
梦梦代码精1 小时前
Likeshop一个开源商城到底有哪些功能模块?
java·低代码·开源·php
勤劳的进取家1 小时前
服务器文件交互方式
运维·服务器·microsoft
Jetev1 小时前
CSS如何实现优雅的间距_使用CSS Grid控制盒模型间隙
jvm·数据库·python