0

Python 3.2.5 で stdin にコマンドを渡すことができません。次の 2 つのアプローチを試しました。また、この質問は前の質問の続きです。

from subprocess import Popen, PIPE, STDOUT
import time

p = Popen([r'fileLoc/uploader.exe'],shell = True, stdout=PIPE, stdin=PIPE, stderr=STDOUT)
p.stdin.write('uploader -i file.txt -d outputFolder\n')
print (p.communicate()[0])
p.stdin.close()

また、IDLE インタープリターでコードを試すと、96、0、85 などの数字が返され、次のようなエラーが返されます。print (p.communicate()[0])

Traceback (most recent call last):
  File "<pyshell#132>", line 1, in <module>
    p.communicate()[0]
  File "C:\Python32\lib\subprocess.py", line 832, in communicate
    return self._communicate(input)
  File "C:\Python32\lib\subprocess.py", line 1060, in _communicate
    self.stdin.close()
IOError: [Errno 22] Invalid argument

私も使用しました:

from subprocess import Popen, PIPE, STDOUT
    import time

    p = Popen([r'fileLoc/uploader.exe'],shell = True, stdout=PIPE, stdin=PIPE, stderr=STDOUT)
    p.communicate(input= bytes(r'uploader -i file.txt -d outputFolder\n','UTF-8'))[0]
    print (p.communicate()[0])
    p.stdin.close()

しかし、運が悪い。

4

2 に答える 2

0
  • shell=True引数をリストとして渡す場合は使用しないでください。
  • stdin.writebytes引数としてオブジェクトが必要です。を配線しようとしstrます。
  • communicate()入力を に書き込み、とstdinの出力を含むタプルを返し、プロセスが終了するまで待機します。1 回しか使用できず、2 回目に呼び出そうとするとエラーが発生します。stdoutsterr
  • あなたが書いている行が標準入力のプロセスに渡されるべきだと確信していますか? 実行しようとしているコマンドではないでしょうか。
于 2013-06-26T20:27:52.493 に答える