Linux下不依赖外部模块实现Python命令行参数传递与读取
可行,实现方法如下
首先明确:Python获取命令行参数的唯一入口是内置的sys.argv,它属于Python标准库,不算“外部模块”,必须借助它拿到参数列表。你可以手动解析这个列表,把-key value格式的参数转换成全局变量,直接在程序里使用。
以下是实现代码:
import sys def parse_cmd_args(): args_dict = {} idx = 1 # 跳过第一个元素(脚本文件名),遍历剩余参数 while idx < len(sys.argv): # 处理以'-'开头的参数名 if sys.argv[idx].startswith('-'): param_name = sys.argv[idx].lstrip('-') # 检查是否有对应的参数值 if idx + 1 < len(sys.argv) and not sys.argv[idx+1].startswith('-'): args_dict[param_name] = sys.argv[idx+1] idx += 2 else: # 无参数值的情况,默认设为True args_dict[param_name] = True idx += 1 else: # 忽略非键值对格式的参数 idx += 1 return args_dict # 解析参数并转为全局变量 cmd_args = parse_cmd_args() globals().update(cmd_args) # 测试使用变量 print(f"number的值是:{number}") print(f"word的值是:{word}")
运行你指定的命令:
python3 myScript.py -number 1 -word "test"
执行后就能直接在脚本里使用number和word变量,输出结果为:
number的值是:1 word的值是:test
注意事项
- 如果参数没有对应的值(比如输入
python3 myScript.py -debug),该变量会被设为True - 非
-key value格式的参数会被自动忽略 - 若参数值包含空格,需要用引号包裹(如示例中的
"test")
内容的提问来源于stack exchange,提问作者user19945252
相关产品推荐
相关产品推荐

