2017-08-09 75 views
-2

win win cmd line shell下的win .exe格式爲D:\test\my.exe -a .\ini\some.ini如何通過python子進程以絕對路徑運行win.exe?

-a指示輸出是文本格式。

.ini\是相對於my.exe的路徑。

那麼如何使用子進程調用此執行?

我嘗試如下,但錯誤:

subprocess.call([r'D:\test\my.exe','-a','.\ini\some.ini']) 
+0

你可以包括完整的追溯? – Stael

+1

運行時出現什麼錯誤?你也想只是運行這個或你想獲得操作的輸出? – Harvey

+0

您的第三個字符串似乎包含非轉義字符,這可能會導致按照您的意圖運行命令時出現問題。 – BoboDarph

回答

1

這將是令人困惑在這裏使用相對路徑。

在Python中,你可以通過使用將相對路徑轉換爲絕對路徑。

import os 
cur_path = os.path.realpath('.') 

你也可以加入像這樣的路徑。

final_path = os.path.join(cur_path, 'ini', 'some.ini') 
0

只有您的第一個字符串被標記爲原始。你要麼需要標記的所有字符串爲原料,你必須反斜線:

subprocess.call([r'D:\test\my.exe', '-a', r'.\ini\some.ini']) 

或逃避你的反斜線:

subprocess.call(['D:\\test\\my.exe', '-a', '.\\ini\\some.ini']) 
0

代碼:

subprocess.call([r'D:\test\my.exe','-a','.\ini\some.ini']) 

上面的代碼是正確的。問題是cmd .exe在上次處理時執行缺少文件。因此,子進程返回值'1'和cmd shell閃現我無法找到錯誤。 它看起來像subprocess返回'0',除非cmd .exe執行完美。