OSError: \[WinError 193\] %1 不是有效的 Win32 应用程序

新手上路,请多包涵

我试图从带有子进程的 python 解释器中调用一个 Python 文件“hello.py”。但我无法解决此错误。 [蟒蛇 3.4.1]。

 import subprocess
subprocess.call(['hello.py', 'htmlfilename.htm'])
Traceback (most recent call last):
  File "<pyshell#42>", line 1, in <module>
    subprocess.call(['hello.py', 'htmlfilename.htm'])
  File "C:\Python34\lib\subprocess.py", line 537, in call
    with Popen(*popenargs, **kwargs) as p:
  File "C:\Python34\lib\subprocess.py", line 858, in __init__
    restore_signals, start_new_session)
  File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
    startupinfo)
OSError: [WinError 193] %1 is not a valid Win32 application

除了使用子进程之外,还有其他方法可以“使用参数调用 python 脚本”吗?

原文由 Caxton 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

错误很明显。文件 hello.py 不是可执行文件。您需要指定可执行文件:

 subprocess.call(['python.exe', 'hello.py', 'htmlfilename.htm'])

您需要 python.exe 在搜索路径上可见,或者您可以将完整路径传递给运行调用脚本的可执行文件:

 import sys
subprocess.call([sys.executable, 'hello.py', 'htmlfilename.htm'])

原文由 David Heffernan 发布,翻译遵循 CC BY-SA 3.0 许可协议

Python 安装程序通常会向系统注册 .py 文件。如果您显式运行 shell,它会起作用:

 import subprocess
subprocess.call(['hello.py', 'htmlfilename.htm'], shell=True)
# --- or ----
subprocess.call('hello.py htmlfilename.htm', shell=True)

您可以在命令行上检查文件关联

C:\>assoc .py
.py=Python.File

C:\>ftype Python.File
Python.File="C:\Python27\python.exe" "%1" %*

原文由 tdelaney 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题