2016-03-30 8 views
0

正しい値を返しません:subprocess.call - のgrep -cは、私がfollwoing Unixのfuncitonを実行するためにPythonのsubprocess.callを使用しようとしています

grep -c 'Frame:0' file.txt 

私のPythonのコードは次のようになります。

frame0Count=int(unix.call("grep -c 'Frame:0' %s"% fileNameVariable,shell=True)) 

見つかりませ発生箇所はありません、画面出力は次のようになります。しかし

0 

FRA me0Count varは0ではなく1の値を持ちます。

誰でもこの理由を説明できますか?

ありがとうございました

+1

'subprocess.call'はコマンドのテキスト出力を返しません。コマンドが成功したかどうかを返します。あなたがgrepの出力を望むなら、 'subprocess.check_output'を見てください –

+0

ああ、ありがとう。私は以前にcheck_outputを実際に試しましたが、何も見つからなかったときにエラーが発生しました – user1338194

+1

@ user1338194 '--silent'パラメータを使って行が返されないときにgrepのエラーを抑制できませんか?この方法で@SimonFraserの 'check_output'の使用を提案することができます – jayant

答えて

1

私のapporachが間違っていたと指摘したように。私の目標を達成するために、私は次のことを行うことができます:

callStringframe0= unix.Popen('grep -c Frame:0 %s' % fileNameVariable , 
           stdout=unix.PIPE, 
           stderr=unix.STDOUT, 
           shell=True) 
frame0Count=int(callStringframe0.stdout.read()) 

これは私に正しい答えを与えます。

関連する問題