对于以下代码,
import os
import shutil
import argparse
if __name__ == '__main__':
ap = argparse.ArgumentParser(description="Test")
ap.add_argument('-s', '--values', action="store", dest="values", nargs='+', type=str)
args = vars(ap.parse_args())
print args
该代码的输入是
$python test.py -s 90030#95000#m#6099#bc 90031#95001#s#1#+100ABC 90032#95002#s#2#+200ABC 90033#95003#s#3#+300 ABC
实际输出为
{'values': ['90030#95000#m#6099#base_case', '90031#95001#s#1#+100ABC', '90032#95002#s#2#+200ABC', '90033#95003#s#3#+300', 'ABC']}
但是,我需要通过忽略第三个参数中的空格来输出以下内容。
{'values': ['90030#95000#m#6099#base_case', '90031#95001#s#1#+100ABC', '90032#95002#s#2#+200ABC', '90033#95003#s#3#+300 ABC']}
我可以知道如何传递正确的论点吗
这不是一个问题。这是一个壳问题。您的shell解析出参数,并将其作为数组传递给Python。
通过在引号之间加上引号,以使外壳程序不解析字符串:
$ python test.py -s 90030#95000#m#6099#bc 90031#95001#s#1#+100ABC \
90032#95002#s#2#+200ABC "90033#95003#s#3#+300 ABC"
请注意,"90033#95003#s#3#+300 ABC"
作为最后一个参数。
您还可以使用反斜杠来转义空格:
$ python test.py -s 90030#95000#m#6099#bc 90031#95001#s#1#+100ABC \
90032#95002#s#2#+200ABC 90033#95003#s#3#+300\ ABC
演示使用csh
和示例代码:
% python test.py -s a b c
{'values': ['a', 'b', 'c']}
% python test.py -s a "b c"
{'values': ['a', 'b c']}
% python test.py -s 90030#95000#m#6099#bc 90031#95001#s#1#+100ABC 90032#95002#s#2#+200ABC 90033#95003#s#3#+300\ ABC
{'values': ['90030#95000#m#6099#bc', '90031#95001#s#1#+100ABC', '90032#95002#s#2#+200ABC', '90033#95003#s#3#+300 ABC']}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句