【问题标题】:traceback while using subprocess.call使用 subprocess.call 时的回溯
【发布时间】:2015-10-26 19:37:22
【问题描述】:
import sys
import subprocess
arg1= sys.argv[1]
subprocess.call("inversion_remover.py",arg1)
subprocess.call("test3.py")
subprocess.call("test4.py")

我得到以下回溯

Traceback (most recent call last):
  File "parent.py", line 4, in <module>
    subprocess.call("inversion_remover.py",arg1)
  File "/usr/lib/python2.7/subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 659, in __init__
    raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer

上面的traceback如何解决?

【问题讨论】:

    标签: python python-2.7 subprocess


    【解决方案1】:

    您需要将命令作为列表传入:

    subprocess.call(["inversion_remover.py", arg1])
    subprocess.call(["test3.py"])
    subprocess.call(["test4.py"])
    

    否则,您的 arg1 值将作为 bufsize 参数传递给基础 Popen() 对象。

    请注意,必须在 路径 上找到脚本。如果您想从本地目录执行这些文件,请在路径前加上./,或扩展PATH 环境变量以包含当前工作目录:

    subprocess.call(["./inversion_remover.py", arg1])
    subprocess.call(["./test3.py"])
    subprocess.call(["./test4.py"])
    

    import os
    
    env = os.environ.copy()
    env['PATH'] = os.pathsep.join(['.', env['PATH']])
    
    subprocess.call(["inversion_remover.py", arg1], env=env)
    subprocess.call(["test3.py"], env=env)
    subprocess.call(["test4.py"], env=env)
    

    【讨论】:

    • 我仍然在 subprocess.call(["inversion_remover.py",arg1]) 文件 "/usr/lib 中获得回溯文件 "./parent.py",第 4 行/python2.7/subprocess.py”,第 522 行,在调用中返回 Popen(*popenargs, **kwargs).wait() 文件“/usr/lib/python2.7/subprocess.py”,第 710 行,在 init errread, errwrite) 文件“/usr/lib/python2.7/subprocess.py”,第 1327 行,_execute_child raise child_exception OSError: [Errno 2] No such file or directory
    • @shubham:那个回溯是什么?
    • @shubham:所以路径中没有可执行文件inversion_remover.py。尝试使用完整路径?你确定脚本是可执行的吗?
    • 是的,它存在于该目录中
    • 如何检查脚本是否可执行??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2018-07-07
    • 2018-06-23
    • 1970-01-01
    • 2010-09-25
    相关资源
    最近更新 更多