我想运行位于MyFolder中的mybat.bat
文件,该文件与当前目录不同。我使用了以下代码:
subprocess.Popen(["mybat", MyArg],
cwd=MyFolder,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE)
但是,我收到以下错误:
"WindowsError: [Error 2] The system cannot find the file specified"
我应该提一下,如果我将mybat
替换为PATH中的另一个程序,例如notepad
,它就可以正常工作。
答案 0 :(得分:1)
仅在子进程中更改工作目录,即cwd=MyFolder
不会使os.path.join(MyFolder, "mybat.bat")
可用。尝试:
p = Popen([os.path.join(MyFolder, "mybat.bat"), MyArg], cwd=MyFolder)
你可以use %~dp0
inside your bat-file, to get the directory where the bat-file resides代替cwd=MyFolder
作为@eryksun suggested。
答案 1 :(得分:0)
将shell = True添加到命令解决了问题。