【问题标题】:subprocess call error, invalid application子进程调用错误,无效应用
【发布时间】:2012-06-03 22:58:50
【问题描述】:

所以我在使用 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('....')

我如何设法让它运行?

提前感谢您的回复。

【问题讨论】:

    标签: python python-2.7 subprocess


    【解决方案1】:

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

    subprocess.call(['python.exe', 'testingosfile.py'])
    

    应该可以,尽管您可能必须提供 Python 解释器的完整路径(我目前无法测试)。

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

    import testingosfile
    

    在函数内部执行命令会很糟糕,但是您可以将testingosfile.py 的有用命令打包到某个函数中。然后,你可以使用

    import testingosfile
    

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

    【讨论】:

    • 太棒了!有用! :D(尽管如果您的PATH 中没有解释器,您确实必须提供完整的解释器路径)非常感谢!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 1970-01-01
      • 2015-07-18
      相关资源
      最近更新 更多