10

以下のコードの実行中にエラーが発生します。

#!/usr/bin/python
import subprocess
import os
def check_output(*popenargs, **kwargs):
    process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs)
    output, unused_err = process.communicate()
    retcode = process.poll()
    if retcode:
        cmd = kwargs.get("args")
        if cmd is None:
            cmd = popenargs[0]
        error = subprocess.CalledProcessError(retcode, cmd)
        error.output = output
        raise error
    return output

location = "%s/folder"%(os.environ["Home"])
subprocess.check_output(['./MyFile'])

エラー

subprocess.check_output(['./MyFile'])
AttributeError: 'module' object has no attribute 'check_output'

に取り組んでいPython 2.6.4ます。

4

3 に答える 3

7

を使いたいだけかもしれませんが、ご存知check_outputのように、 method がありますが、 Python 2.7 ( http://docs.python.org/3/library/subprocess.html#subprocess.check_output )subprocess.check_outputまで定義されていません。

モジュール内に関数が存在しない場合 (つまり、v2.7 より前に実行されている場合) にモジュール内の関数を定義する、これが必要な場合もあります。

try: subprocess.check_output
except: subprocess.check_output = check_output
subprocess.check_output()
于 2013-07-09T04:39:30.870 に答える
6

使用するだけです:

check_output(['./MyFile'])

独自の関数を定義しましたが、モジュールの属性ではありませんsubprocess(Python 2.6 以前の場合)。

インポートされたモジュール オブジェクトに関数を割り当てることもできます (ただし、必須ではありません)。

subprocess.check_output = check_output
location = "%s/folder" % (os.environ["Home"])
subprocess.check_output(['./MyFile'])
于 2013-07-09T04:37:02.443 に答える