2017-10-16 48 views
1

我是新來的Windows Python。我正在嘗試使用python運行命令行工具。該工具將閃爍連接到機器IP地址的固件。我可以打開命令提示符,然後使用命令在Windows上使用python執行程序

C:\ ToolsSuite> SDI --ip 172.23.240.41 --fwdl「C:\建立\ firmware_image.zip 。這對我的作品非常好

但是,當我試圖在Windows上使用的Python腳本來執行,我不能這樣做。Python腳本看起來是這樣的。

import subprocess 
import os 

os.chdir(r"C:\ToolsSuite") 
#os.system('cd c:\mydir') 
os.system("sdi --ip 192.92.48.32 --fwdl C:\firmware_image.zip") 

#subprocess.Popen(r'sdi --ip 192.92.48.32 --fwdl "c:\firmware_image.zip"', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 

引發的異常是「找不到文件。」我沒有得到如何當存儲在某個位置時,給出固件文件的路徑,例如'C'驅動器或窗口的某個文件夾位置。

+0

'os.system(「sdi --ip 192.92.48.32 --fwdl C:\\ firmware_image.zip」)' – Goyo

回答

0

如果sdi可執行文件是在「C:\ ToolsSuite」,這應該工作:

subprocess.call(['sdi', '--ip 192.92.48.32', r'--fwdl "c:\firmware_image.zip"']) 
+0

@jonatan,不,它不是。由於'r',位於由單引號括起來的以下字符串內的所有內容都被認爲是沒有任何轉義的原始字符串。測試它:'print r' - fwdl「c:\ firmware_image.zip」'' –

0

如果你想調用Windows命令,你需要給的完整路徑的命令。

你可以試試:

import subprocess  
import os.path 

# C:\ToolsSuite>sdi --ip 172.23.240.41 --fwdl "c:\BUILDS\firmware_image.zip" 
cmd = os.path.join("C:\\ToolsSuite", "sdi") 
args = [cmd, 
     '--ip', '172.23.240.41', 
     '--fwdl', 'c:\\BUILDS\\firmware_image.zip'] 
subprocess.check_call(args) 

這裏,check_call是一個例外,以取代非零退出代碼有用。當然,你也可以選擇相同的另一個功能family

相關問題