Python 于 CLI 要将命令行后面所有参数(argv)的值,全部变成一个字符串,要怎么做呢?
注:此篇 Python2 / Python3 皆适用
Python 将 argv 所有参数组成一个字符串
sys.argv[1:] 可以抓到所有后面的参数。
使用 enumerate 可以将所有参数一个一个印出来。
for i, s in enumerate(sys.argv[1:], len(sys.argv)):
print(s)
测试:python cli.py "aa x" bb c d 中文
输出:
aa x
bb
c
d
中文
要将字符串结合在一起,可以使用此段程序:" " . join(map(lambda s: s, sys.argv[1:])),范例程序如下:
#!/usr/bin/evn python
import sys
# 将所有字符串连在一起,"文本"的都拆开
args = "".join(sys.argv[1:)
# args = " " . join(map(lambda s: s, sys.argv[1:]))
print(args)
测试:python cli.py "aa x" bb c d 中文
输出:aa x bb c d 中文
此作法于 "文本" 包住的,会被拆解出来,双引号也跟着消失了。
再来改写成下述:
#!/usr/bin/evn python
import sys
# 将所有字符串连在一起,"文本"得要保留完整
args = " " . join(map(lambda s: '"%s"' % s if ' ' in s else s, sys.argv[1:]))
print(args)
测试:python cli.py "aa x" bb c d 中文
输出:"aa x" bb c d 中文