命令來運行內MyCWD
(可變捕獲工作目錄): vagrant ssh -c "cd /Path/To/Dir && ./my-shell-script.sh -d argD -f argF"
我該如何格式化命令參數,它們本身就是一組Python命令的子進程模塊?
我想這樣做,但沒有奏效:
vagrantCmd = ['vagrant','ssh','-c',
'cd', '/Path/To/Dir', '&&',
'./my-shell-script.sh', '-d', '-argD', '-f', 'argF']
output,error = subprocess.Popen(command, universal_newlines=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=MyCWD).communicate()
但是,如果我這樣做,它只是工作:
argCmd = ['cd', '/Path/To/Dir', '&&',
'./my-shell-script.sh', '-d', '-argD', '-f', 'argF']
os.chdir(MyCWD)
os.system('vagrant ssh -c "%s"' % ' '.join(argCmd))
後者似乎很多更容易但不再推薦os.system
。我怎麼能得到這個與subprocess.Popen()
?
根據某些設置構建陣列(argCmd
)。基本上我建立了這樣的數組,然後嘗試將它們傳遞給subprocess.Popen
,但是這種奇怪的字符串構建總是讓我用這個模塊敲打我的頭,但是對於os.system
來說是相當微不足道的。你如何有效地使用字符串和subprocess
?
我也嘗試......但是毫無效果由於某種原因 - 它似乎在加入不包括雙引號子參加... – PhD
我固定它,@PhD – enedil