Windows错误与python

Windows错误与python,python,popen,Python,Popen,我正在编写一段代码,该代码应该在我的系统上的一个文件夹中运行一个exe文件,但出现了一个错误,显示 WindowsError:[错误3]系统找不到指定的路径。 下面是一些代码: exepath = os.path.join(EXE file localtion) exepath = '"' + os.path.normpath(exepath) + '"' cmd = [exepath, '-el', str(el), '-n', str(z)] print 'The python progr

我正在编写一段代码,该代码应该在我的系统上的一个文件夹中运行一个exe文件,但出现了一个错误,显示

WindowsError:[错误3]系统找不到指定的路径。 下面是一些代码:

exepath = os.path.join(EXE file localtion)
exepath = '"' + os.path.normpath(exepath) + '"'
cmd = [exepath, '-el', str(el), '-n', str(z)]

print 'The python program is running this command:'
print cmd

process = Popen(cmd, stderr=STDOUT, stdout=PIPE)
outputstring = process.communicate()[0]
我已导入子流程,也已从子流程导入*

例如,在我显示的代码的第一行中,我的exe文件位置是这样的:

 exepath= os.path.join('/Program Files','next folder','next folder','blah.exe')

我遗漏了什么吗?

如果我没记错,您不需要像第二行那样引用可执行文件路径


编辑:嗯,只是抓起附近的Windows box并测试了一下。无论路径是否被引用,Popen的工作原理都是相同的。所以这不是问题。

如果我没记错的话,您不需要像第二行那样引用可执行文件路径


编辑:嗯,只是抓起附近的Windows box并测试了一下。无论路径是否被引用,Popen的工作原理都是相同的。所以这不是问题。

您需要正确地转义可执行路径中的空间

您需要正确地转义可执行路径中的空间

好的,除非运行程序时涉及到
cmd.exe
,否则不需要用引号括住路径


此外,您可能希望使用环境变量
ProgramFiles
查找“程序文件”的实际位置,因为这取决于区域设置,也可以使用TweakUI进行调整。

AFAIK,除非运行程序时涉及到
cmd.exe
,否则不需要用引号括住路径


此外,您可能希望使用环境变量
ProgramFiles
查找“程序文件”的实际位置,因为这取决于区域设置,也可以使用TweakUI进行调整。

除了正确转义空格和其他可能导致问题的字符(如/)之外,您还可以使用8个字符的旧DOS路径

例如,程序文件将是:

Progra~1,确保最后两个字符追加~1

编辑:您可以在字符串的前面添加一个r,使其成为原始文本。Python将逐个字符读取字符串。像这样:


r“\Program files”

除了正确转义空格和其他可能导致问题的字符(如/)外,还可以使用8个字符的旧DOS路径

例如,程序文件将是:

Progra~1,确保最后两个字符追加~1

编辑:您可以在字符串的前面添加一个r,使其成为原始文本。Python将逐个字符读取字符串。像这样:


r“\Program files”

仅从上面的代码中删除引号,它表示在我的示例中未定义“blah”。仅从上面的代码中删除引号,它表示在我的示例中未定义“blah”。blah.exe用于运行程序。我给它一个for语句,其中包含blah.exe文件使用的一些数字。blah.exe用于运行程序。我给它输入了一个for语句,其中包含blah.exe文件使用的一些数字。如果执行open(exepath),它是否会引发IOError(表示此文件不可访问)?如果执行open(exepath),它是否会引发IOError(表示此文件不可访问)?程序文件前面应该有两个反斜杠,堆栈溢出的编辑器正在删除其中一个。程序文件前面应该有两个反斜杠,堆栈溢出的编辑器正在删除其中一个。是的,请跳出空格。还有,“/”在那里做什么?windows不使用“\”吗?一般来说,不要使用“程序文件”或“我的文档”来做任何事情,你会更高兴的。/在Windows上的系统调用中工作正常,即使在真正的DOS中也是如此。是的,逃离空间。还有,“/”在那里做什么?windows不使用“\”吗?一般来说,不要用“程序文件”或“我的文档”做任何事情,你会更高兴的。/在Windows上的系统调用中工作得很好,即使在真正的DOS中也是如此。