如何在Python脚本中传递、提取并使用命令行传入的变量
解决方案
直接调用现有字典取值
你已经把所有解析后的命令行参数存储在args字典中,直接通过对应键名取值即可使用,拼接文件名的示例如下:
import re import sys import os # 推荐用os模块处理路径,自动适配系统路径分隔符 args = {} args['pythonFile'] = sys.argv[0] for arg in sys.argv[1:]: variable = re.search('\-\-(.*)\=',arg) variable = variable.group(1) value = re.search('\=(.*)',arg) value = value.group(1) args[variable] = value # 以下是变量调用代码 # 1. 从字典取出对应参数 var_name1 = args['var_name1'] ds_name2 = args['ds_name2'] path = args['path'] # 2. 拼接完整文件名 filename = os.path.join(path, ds_name2) # 测试输出 print(f"拼接后的文件路径:{filename}") print(f"传入的var_name1值:{var_name1}")
运行后输出的filename值为C:\state.sas7bdat,符合需求。
现有代码优化建议
- 手动写正则解析参数容易出现边界异常,比如参数值包含等号的场景会匹配错误,更推荐使用Python标准库内置的
argparse模块处理命令行参数,示例如下:
import argparse import os parser = argparse.ArgumentParser() parser.add_argument("--var_name1", type=str, required=True) parser.add_argument("--ds_name2", type=str, required=True) parser.add_argument("--path", type=str, required=True) args = parser.parse_args() # 直接通过属性调用参数 filename = os.path.join(args.path, args.ds_name2) print(filename) print(args.var_name1)
- 注意Windows命令行传路径时,如果路径以
\结尾,会转义后续的引号导致参数解析异常,建议传路径时结尾不加\,或者写成双反斜杠C:\\,也可以直接用正斜杠C:/,Python可以正常识别Windows下的正斜杠路径。
内容的提问来源于stack exchange,提问作者prad001
相关产品推荐
相关产品推荐

