我是python的新手。我搜索並嘗試以下方法:Python:將命令行參數分享給os.system調用
我有第三方應用程序稱爲「xyz」,它採用n參數。
我想將這個「xyz」轉換成我需要m個參數的模塊「abc.py」。
我想閱讀,並保持MY M參數,並通過剩餘的N參數來「XYZ」
注:n參數的數量是巨大的,所以它最好的,如果我們不需要重新狀態相同數量的參數在我的模塊,並直接傳遞給「xyz」
希望它應該是可能的,我沒有困惑。
感謝您的幫助。
我是python的新手。我搜索並嘗試以下方法:Python:將命令行參數分享給os.system調用
我有第三方應用程序稱爲「xyz」,它採用n參數。
我想將這個「xyz」轉換成我需要m個參數的模塊「abc.py」。
我想閱讀,並保持MY M參數,並通過剩餘的N參數來「XYZ」
注:n參數的數量是巨大的,所以它最好的,如果我們不需要重新狀態相同數量的參數在我的模塊,並直接傳遞給「xyz」
希望它應該是可能的,我沒有困惑。
感謝您的幫助。
Python將接收sys.argv
數組中的命令行參數。這只是在命令行上傳遞的值數組。
如果你想在Python中使用一些參數,只需從sys.argv中移除它們,然後將其餘的傳遞給os.system。
import sys
args = []
for arg in sys.argv:
if isPythonArg(arg):
savePythonArg(arg)
else:
args.append(arg)
os.system("xyz" + " ".join(args))
假設你的外部程序「xyz」是echo
。
import subprocess
import sys
m = 3 # number of args for abc.py; remainder goes to external program 'echo'
args = sys.argv
abc_args = args[1:m+1]
echo_args = args[m+1:]
cmd = ['echo']
cmd.extend(echo_args)
subprocess.call(cmd)
這導致
$ python abc.py 1 2 3 4 5 6
4 5 6
請注意,你應該避免'os.system',*特別是利用用戶提供的數據處理時,*。 'os.system'生成一個子shell,這意味着惡意參數可能會執行任意代碼。改用'subprocess.call'。 – Bakuriu
可能的重複[在Python中調用外部命令](http://stackoverflow.com/questions/89228/calling-an-external-command-in-python) – Wolf