次の場合:
import subprocess
from cStringIO import StringIO
subprocess.Popen(['grep','f'],stdout=subprocess.PIPE,stdin=StringIO('one\ntwo\nthree\nfour\nfive\nsix\n')).communicate()[0]
私は得る:
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/build/toolchain/mac32/python-2.4.3/lib/python2.4/subprocess.py", line 533, in __init__
(p2cread, p2cwrite,
File "/build/toolchain/mac32/python-2.4.3/lib/python2.4/subprocess.py", line 830, in _get_handles
p2cread = stdin.fileno()
AttributeError: 'cStringIO.StringI' object has no attribute 'fileno'
どうやら、cStringIO.StringIOオブジェクトは、subprocess.Popenに適合するファイルダックに十分近づきません。これを回避するにはどうすればよいですか?
call(['ls', '-1'], shell=True)
が間違っている)。代わりに、サブプロセスのタグの説明から一般的な質問を読むことをお勧めします。特に、argsがシーケンスの場合、なぜsubprocess.Popenが機能しないのですか?なぜcall(['ls', '-1'], shell=True)
間違っているのかを説明します。ブログの投稿の下にコメントを残したことを覚えていますが、なぜか今は表示されません。