假設一個python腳本調用具有:使用Python中的命令行參數,而不是外殼
python myscript.py ./mycommand > myoutput.txt
如何確保myscript.py
中的命令行參數的清單得到./mycommand > myoutput.txt
而非外殼的管道輸出的python myscript.py ./mycommand
的文件?
編輯
使用引號引起了其他問題。試想一下:
import subprocess
import sys
argList = sys.argv[1].split()
subprocess.call(argList)
然後由稱爲:
python myscript.py 'ls -l > ls.out'
結果
ls: cannot access >: No such file or directory
ls: cannot access ls.out: No such file or directory
的動機是,只能從命令的輸出,我試圖運行應保存在文件。從myscript.py
到stdout
的任何其他輸出都不應該轉到該文件。看起來管道需要設置stdout
選項至subprocess.call()
。有沒有辦法直接使用參數列表,所以我不必解析它的東西,如>
,2>
,2&>
,<
等?
你試過報價了嗎? –
是的,報價將做到這一點,但有沒有辦法做到這一點不引號? – tpg2114
如果不加引號,'> myoutput.txt'不是Python的命令行參數的一部分(在典型的shell中)。 – harpo