在 python 中,如何以與解析命令行參數(shù)字符串相同的方式解析字符串以構(gòu)造sys.argv?我想做以下第一:允許main在 my中傳遞一個可選的參數(shù)向量runnable.py:def main(argv=[]): argv = argv or sys.argv[1:] parser = argparse.ArgumentParser(...) ... more parser config ... args = parser.parse_args(argv)然后,在另一個模塊中,我希望能夠在 python 中使用這個主函數(shù):argv = how_do_i_do_this('''-f text.txt -o -q "Multi word argument" arg2 "etc."''')assert(argv == ['-f', 'text.txt', '-o', '-q', 'Multi word argument', 'arg2', 'etc.'])runnable.main(argv)
1 回答

開滿天機
TA貢獻(xiàn)1786條經(jīng)驗 獲得超13個贊
使用shlex.split:
>>> import shlex
>>> shlex.split('''-f text.txt -o -q "Multi word argument" arg2 "etc."''')
['-f', 'text.txt', '-o', '-q', 'Multi word argument', 'arg2', 'etc.']
此外,Python 可變默認(rèn)值是萬惡之源。不要argv=[]用作 的默認(rèn)參數(shù)main,使用argv=None然后在 的主體內(nèi)檢查其類型main:
def main(argv=None):
if argv is None:
argv = sys.argv[1:]
# ...
添加回答
舉報
0/150
提交
取消