【问题标题】:Error using subprocess.check_output in Python在 Python 中使用 subprocess.check_output 时出错
【发布时间】:2013-11-24 17:38:07
【问题描述】:

我在 Python 中处于非常基础的水平,我正在尝试学习如何使用 subprocess 模块。我有一个名为 x.py 的简单计算器程序,它接受一个数字,将其乘以 2,然后返回结果。我正在尝试使用以下两行代码从 IDLE 执行该简单程序,但出现错误。数字 5 是我试图输入 x.py 以获得结果的数字。有人介意帮助我了解我做错了什么并帮助我做对吗?谢谢!

import subprocess

result = subprocess.check_output(["C:\\Users\\Kyle\\Desktop\\x.py",5])

Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
result = subprocess.check_output(["C:\\Users\\Kyle\\Desktop\\x.py",5])
File "C:\Python27\lib\subprocess.py", line 537, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 855, in _execute_child
args = list2cmdline(args)
File "C:\Python27\lib\subprocess.py", line 587, in list2cmdline
needquote = (" " in arg) or ("\t" in arg) or not arg
TypeError: argument of type 'int' is not iterable

【问题讨论】:

    标签: python subprocess


    【解决方案1】:

    5 作为字符串传递:

    import sys
    result = subprocess.check_output([sys.executable, "C:\\Users\\Kyle\\Desktop\\x.py", '5'])
    

    【讨论】:

    • 我尝试将 5 作为字符串传递,但收到一个新的有趣错误!回溯(最近一次调用):文件“”,第 1 行,在 结果 = subprocess.check_output (["C:\\Users\\Kyle\\Desktop\\x.py", '5']) 文件“C:\Python27\lib\subprocess.py”,第 537 行,在 check_output 进程 = Popen(stdout=PIPE, *popenargs, **kwargs) 文件“C:\Python27\lib\subprocess. py",第 679 行,在 init 中 errread,errwrite) 文件 "C:\Python27\lib\subprocess.py",第 896 行,在 _execute_child 启动信息中) WindowsError: [Error 193] %1 is not一个有效的 Win32 应用程序
    • @Thetravellingfool 试试我更新的解决方案,并确保您已将python 添加到path 环境变量设置中。(C:\\Python27)
    • 感谢您的帮助!我将 Python 添加到路径环境变量设置中并使用了您建议的代码,它给了我另一个奇妙的错误。有什么想法吗?回溯(最近一次调用):文件“”,第 1 行,在 结果 = subprocess.check_output ([sys.executable, "C:\\Users\\Kyle\\Desktop\\x .py", '5']) 文件“C:\Python27\lib\subprocess.py”,第 544 行,在 check_output 中引发 CalledProcessError(retcode, cmd, output=output) CalledProcessError: Command '['C:\\Python27 \\pythonw.exe', 'C:\\Users\\Kyle\\Desktop\\x.py', '5']' 返回非零退出状态 1
    • @Thetravellingfool 该脚本在通过 cmd 执行时工作正常吗?
    • 是的,我打开了 cmd 提示符并输入了 python C:\Users\Kyle\Desktop\x.py 并且我的脚本运行了。它问我一个号码,我提供了它,它返回了一个答案。您认为非零退出状态 1 错误是怎么回事?谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-08-27
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2019-04-18
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多