Python 將 argv 所有參數組成一個字串

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 中文

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Python 將 argv 所有參數組成一個字串〉中有 2 則留言

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料