2015-12-31 46 views
0

我已經在Windows上的蟒蛇幾個命令執行使用subprocess.call(),但對於每一個我需要調用適當的命令之前,執行與environmet建立批處理文件,它看起來像這樣Python的幾個工藝打造外殼

subprocess.call(precommand + command) 

有沒有辦法在python中「創建」shell,該批處理文件只能執行一次,並且在該shell命令中會執行多次?

回答

1
  1. 寫命令一個bat文件(tempfile.NamedTemporaryFile()
  2. 運行BAT文件(subprocess.check_call(bat_file.name)

(未測試):

#!/usr/bin/env python 
from __future__ import print_function 
import os 
import subprocess 
import tempfile 

with tempfile.NamedTemporaryFile('w', suffix='.bat', delete=False) as bat_file: 
    print(precommand, file=bat_file) 
    print(command, file=bat_file) 
rc = subprocess.call(bat_file.name) 
os.remove(bat_file.name) 
if rc != 0: 
    raise subprocess.CalledProcessError(rc, bat_file.name) 
0

您是否需要分別從每個命令中獲取輸出?如果不是,您可以使用& &來傳達這些命令。要麼 ;

cd dir && cp test1 test2 && cd - 
+0

這裏出現這些命令很長的問題,所以只有10%的命令由於命令太長而被執行 – miqelm