我有一個調用各種參數的可執行程序Python腳本(在這個例子中,它是「sqlpubwiz.exe」,這是「Microsoft SQL Server數據庫發佈嚮導」):在Python中,我如何使用子進程而不是os.system?
import os
sqlpubwiz = r'"C:\Program Files\Microsoft SQL Server\90\Tools\Publishing\sqlpubwiz.exe"'
server = 'myLocalServer'
database = 'myLocalDatabase'
connection_values = ['server=' + server, 'database=' + database, 'trusted_connection=true']
connection_string = ';'.join(connection_values)
dbms_version = '2000'
sqlscript_filename = 'CreateSchema.sql'
args = [
sqlpubwiz,
'script',
'-C ' + connection_string,
sqlscript_filename,
'-schemaonly',
'-targetserver ' + dbms_version,
'-f',
]
cmd = ' '.join(args)
os.system(cmd)
此代碼運行正確,但我想養成使用subprocess的習慣,因爲它打算取代os.system。但是,經過幾次失敗嘗試後,我似乎無法正常工作。
如何將上面的代碼看起來一樣,如果它被轉換到位使用os.system的使用子?
我想,但我得到了以下錯誤:WindowsError:[錯誤3]系統找不到指定的路徑 – 2009-01-07 17:34:49
我覺得POPEN需要ARGS作序,而不是一個大的空間分隔的字符串。嘗試傳遞'args'而不是'cmd'。 – 2009-01-07 17:45:43
刪除引號允許腳本執行時沒有錯誤,但沒有創建sql文件。我怎樣才能看到一個exe的控制檯輸出? – 2009-01-07 17:55:01