【问题标题】:Windows error and pythonWindows错误和python
【发布时间】:2009-06-18 15:20:11
【问题描述】:

我正在编写一些代码,该代码应该在我系统上的一个文件夹中运行一个 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')

我错过了什么吗?

【问题讨论】:

  • 如果执行open(exepath),是否会引发IOError(表示该文件不可访问)?

标签: python popen


【解决方案1】:

需要正确转义可执行路径中的空格

【讨论】:

  • 是的,逃离这个空间。另外,“/”在那里做什么? windows不使用“\”吗?一般来说,不要使用“程序文件”或“我的文档”来做任何事情,你会更快乐。
  • / 在 Windows 上的系统调用中工作得很好,甚至在真正的 DOS 中也是如此。
【解决方案2】:

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

例如,程序文件是:

Progra~1 ,确保为最后两个字符附加 ~1。

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

r "\程序文件"

【讨论】:

  • Program Files前面应该有两个反斜杠,Stack Overflow的编辑器正在剪掉其中一个。
【解决方案3】:

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

编辑:好吧,刚刚抓起附近的 Windows 盒子并测试了它。无论路径是否被引用,Popen 的工作方式都是一样的。所以这不是问题。

【讨论】:

  • 只是在上面的代码中去掉引号,它说'blah'在我的例子中没有定义
【解决方案4】:

AFAIK,除非cmd.exe 参与运行程序,否则无需将路径括在引号中。

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

【讨论】:

  • blah.exe 用于运行程序。我正在为它提供一个带有 blah.exe 文件使用的数字的 for 语句。
猜你喜欢
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 2014-01-30
  • 2015-04-01
  • 2018-10-29
相关资源
最近更新 更多