子进程调用错误,应用程序无效

时间:2012-06-03 22:58:51

标签: python python-2.7 subprocess

所以我遇到了使用subprocess.call()的问题,我想我可能只是称错了。我正在使用:

subprocess.call('testingosfile.py')

我得到追溯:

Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    subprocess.call('testingosfile.py')
  File "C:\Python27\lib\subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "C:\Python27\lib\subprocess.py", line 679, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 893, in _execute_child
    startupinfo)
WindowsError: [Error 193] %1 is not a valid Win32 application

testingosfile.py的内容是:

print "hello world!"
raw_input('....')

我如何设法让它运行?

提前感谢您的回复。

2 个答案:

答案 0 :(得分:2)

错误消息非常有意义 - 使用subprocess,您只能启动可执行文件。因此,要修复它,您应该启动可执行文件。具体来说,您应该启动Python解释器并告诉它运行您的脚本。像

这样的东西
subprocess.call(['python.exe', 'testingosfile.py'])

应该可以工作,尽管你可能需要提供Python解释器的完整路径(我目前无法测试)。

但是,您是否考虑过导入testingosfile.py?无论何时导入Python脚本,都会运行该脚本中的所有命令。使用

import testingosfile

在函数内部执行命令的风格很差,但你可以将testingosfile.py的有用命令打包成某个函数。然后,你可以使用

import testingosfile

位于主脚本的顶部,只要您想要打印Hello World并获取用户的输入,就可以调用该函数。

答案 1 :(得分:1)

尝试subprocess.call(“myfile.ext”,shell = True)