所以我有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:
答案 0 :(得分:0)
使用sys
模块来解析命令行参数(sys.argv将是参数列表):
#!/usr/bin/env python3
import sys
# The first argument (sys.argv[0]) is the script name
print('Command line arguments:', str(sys.argv))
运行脚本:
$ python3 script.py these are my arguments
Command line arguments: ['script.py', 'these', 'are', 'my', 'arguments']
您可以在this tutorial中找到更多用法示例。
答案 1 :(得分:0)
您可能想看看python-fire https://github.com/google/python-fire
import fire
def main(c=None, p=None, j=None, t=None):
print(c, p, j, t)
if c:
print("C passed")
elif p and j and t:
print("P, J, T passed")
if __name__ == "__main__":
fire.Fire(main)
您只需传递None即可跳过参数。
python main.py None p_val j_val t_val
python main.py c_val