2017-02-17 136 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')