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 中文
"".join(sys.argv[1:])
不用map
嗯嗯,感謝,我來改一下 🙂