【发布时间】:2023-04-03 13:03:02
【问题描述】:
所以我有我的 main.py 脚本,它基本上将根据命令行上传递的内容运行某些条件语句。例如,如果我使用main.py -t
,这将运行测试模式。如果我运行main.py -j /testdata -c 2222-22-22 -p 2222-22-22
,这将运行默认模式等等。
我怎样才能停止在命令行上传递标志并能够运行我的代码,而不是使用标志 -j , -c 和 -p ,我可以正常传递值。
到目前为止,我的代码如下:
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-c", "--execute-cur-date", action="store", required=False)
parser.add_argument("-p", "--execute-pre-date", action="store", required=False)
parser.add_argument("-j", "--execute-json-path", action="store", required=False)
parser.add_argument("-t", "--execute-test", action="store_true", required=False)
args = parser.parse_args()
if args.execute_test:
testing()
elif args.execute_json_path and args.execute_cur_date and args.execute_pre_date:
【问题讨论】:
-
argparse
接受positional
参数,这些参数完全取决于位置(顺序)而不是标志。但是对于那些你必须按照解析器定义的顺序提供所有值。或者您可以自己解析sys.argv
列表。 -
@hpaulj 它如何知道 sys.argv 意味着哪些条件语句?
-
在
sys.argv
中,您只得到一个字符串列表,而您自己的代码必须决定其中的含义。如果这让您感到困惑,请坚持使用已标记的版本, -
您得到的答案毫无帮助,因为您的问题没有任何意义。您是什么意思“正常传递值”?用户@arudzinska 似乎提供了最有说服力的答案。如果出现这些标志时您没有执行任何操作,为什么还要解析命令行中的参数而不是
-t
?
标签:
python
python-2.7
command-line
arguments
argparse
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在命令行上传递参数而不在python中使用标志 - Python技术站