6

私がコマンドの下で実行している場合、pythonは素晴らしい結果を返しています..

result_aftermatch= subp.Popen('ls -lrt', stdout=subp.PIPE,stderr=subp.PIPE,shell=True)

しかし、同じように、コードを含むファイルから行をgrepする必要があるのは以下のとおりです...

list_of_id=[23,34,56,77,88]
result_aftermatch= subp.Popen('egrep','list_of_IDs','/home/bimlesh/python/result.log', stdout=subp.PIPE,stderr=subp.PIPE,shell=True)
result_lines,result_err= result_aftermatch.communicate()
print result_lines

上記のコードは以下のようなエラーを出しています...

Traceback (most recent call last):
  File "test.py", line 144, in <module>
    result_aftermatch= subp.Popen('egrep','list_of_IDs','/home/bimlesh/python/result.log', stdout=subp.PIPE,stderr=subp.PIPE,shell=True)
  File "/usr/lib/python2.6/subprocess.py", line 573, in __init__
    raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer

助けてください。

4

2 に答える 2

3

問題は、コマンドを複数の引数として渡していることです。それらをリストまたはタプルとして渡す必要があります。

お気に入り:

subp.Popen([ 'egrep','list_of_IDs','/home/bimlesh/python/result.log' ], stdout=subp.PIPE,stderr=subp.PIPE,shell=True)
于 2013-06-10T19:11:16.693 に答える