2017-02-17 79 views
0

我正在嘗試使用Python腳本執行批處理文件。這可能嗎? Python腳本與批處理文件位於不同的文件夾中。例如,Python腳本位於C:\users\me\desktop\python,而批處理文件位於文件夾C:\users\me\desktop\batch。我不想使用批處理文件的完整路徑,因爲我希望它也可以在其他人的計算機上工作(即C:\users\me部分可能不同)。使用Python腳本執行批處理文件

這是我試過的腳本(從「蟒蛇」文件夾在桌面上執行)

from subprocess import call 

path = "..\batch" 
call([path+"\test.bat"]) 

結果:未發現文件

+0

的(http://stackoverflow.com/questions/5469301/run-a-bat-file-using-python-code) –

+2

可能重複的可能的複製[運行.bat文件使用Python代碼](http://stackoverflow.com/questions/5469301/run-a-bat-file-using-python-code) –

+0

[執行子進程失敗]的可能重複(http:// stackoverflow .com/questions/1818774 /執行一個子進程 - 失敗) – feedMe

回答

1

反斜槓特殊字符蟒。因此,你在這裏創造的路徑是不是那些你認爲他們是:

In [1]: test = "..\bfoo" 

In [2]: test 
Out[2]: '..\x08foo' 

使用原始字符串代替:

In [3]: test = r"..\bfoo" 

In [4]: test 
Out[4]: '..\\bfoo' 

而實際上,到路徑段蟒相結合的最佳方式是通過使用os.path.join。這將自動處理Unix-lie與Windows操作系統的反斜線和斜線問題。

+0

謝謝,這工作。但是,當我運行Python腳本時,它現在會顯示批處理文件中的代碼而不實際執行它? – vdvaxel

+0

在命令行?或者它打開一個新窗口。但是,這實際上可能是一個不同的問題。 – languitar

+0

是的,它顯示了命令行上的代碼,並沒有打開一個新窗口。 – vdvaxel

0

使用os.path

import os 

dir_path = os.path.dirname(os.path.realpath(__file__)) # get the full path of the Python file 
parent_dir = os.path.dirname(dir_path) 

new_path = os.path.join(parent_dir, 'bath', 'test.bat')