1
如果我有命令:獲取殼輸入的字符串,而不是列出
$ /file.py item 2
做sys.argv
會給我:
['/file.py', 'item 2']
有沒有一種方法來獲取輸入精確的文本,無需做' '.join(sys.argv)
?
如果我有命令:獲取殼輸入的字符串,而不是列出
$ /file.py item 2
做sys.argv
會給我:
['/file.py', 'item 2']
有沒有一種方法來獲取輸入精確的文本,無需做' '.join(sys.argv)
?
確切的最終用戶輸入決不會從shell傳遞到正在運行的程序。彙編參數向量由shell執行,並且該向量 - 而不是從其構建的字符串 - 作爲參數傳遞給execve
系統調用。
事實上,可能根本就不存在shell命令 - 請考慮以subprocess.call(['/file.py', 'item 2'], shell=False)
或其他語言中的等價物調用腳本的情況。
沒有修改你的shell來做一些特殊的事情(比如將最後的命令導出到一個環境變量 - 一個可以用DEBUG
陷阱很容易實現的東西),沒有任何可能的方法來檢索它。
不是我所知道的。這看起來像[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) - 你能解釋一下你爲什麼需要這個嗎? – jonrsharpe 2014-10-18 19:41:06
...','.join(sys.argv)'給你一個不正確的結果 - 考慮'./yourprog foo bar'和'./yourprog「foo bar」'。 – 2014-10-18 19:45:10
...如果你需要,你需要使用'pipes.quote(sys.argv)'或者'shlex.quote(sys.argv)'(取決於你的目標平臺是Python 2.x或Python 3)。 – 2014-10-18 19:45:48