0

ので、私は持っています:

result = subprocess.check_output(['wine',
                    os.getcwd()+'/static/sigcheck.exe',
                    '-a','-i','-q',
                    self.tmpfile.path()])

しかし、これを実行するたびに、このエラーが発生します

CalledProcessError: Command '['wine', '/home/static/sigcheck.exe', '-a', '-i', '-q',     '/tmp/tmpxnsN5j']' returned non-zero exit status 1

しかし、私がそれに変更check_outputするcallとうまくいきます:

Z:\tmp\tmpvOybcm:
    Verified:       Unsigned
    File date:      9:08 AM 10/24/2012
    Publisher:      Hardcore Computer
    Description:    Farthest Emitters Converter
    Product:        Farthest Emitters Converter
    Version:        3.2.0
    File version:   3.2.0
fixme:mscoree:StrongNameSignatureVerificationEx (L"Z:\\tmp\\tmpvOybcm", 1, 0x33ec13): stub
    Strong Name:    Unsigned
    Original Name:  n/a
    Internal Name:  Farthest Emitters Converter
    Copyright:      Hardcore Computer 2006
    Comments:       n/a

check_outputうまくいかない理由はありますか?

4

3 に答える 3

6

ゼロ以外の戻りコードは、(通常)プログラムによるエラーで終了を示す方法です。したがってsubprocess.check_output、プロセスの戻りコードがゼロ以外の場合、例外が発生します。使用する場合:

retcode = call(...)

次に、戻りコードを出力します。1を返していることがわかります。

于 2012-10-24T13:12:58.383 に答える
3

ゼロ以外の終了ステータスでエラーを発生させずに文字列で出力を取得するには、次のようにします。

p = Popen(['wine',...], stdout=PIPE)
output = p.communicate()[0]

check_output()rc = p.poll()後に実行されp.communicate()、の場合はエラーが発生しますbool(rc) == True

于 2012-10-24T13:21:13.113 に答える
1

別の方法

proc = subprocess.Popen(['wine',
                    os.getcwd()+'/static/sigcheck.exe',
                    '-a','-i','-q',
                    self.tmpfile.path()], stdin=subprocess.PIPE,  stdout=subprocess.PIPE)
stdout = proc.stdout.read()
于 2012-10-24T13:19:29.463 に答える