1

を使用してファイルを grep しようとしていますos.system("grep 'regex' /path/to/file.log")。正規表現が正しく、シェルから実行するとコマンドが機能することはわかっていますが、スクリプトを実行しようとすると、次のエラーが表示されます。

sh: /path/to/file.log: Permission denied

os モジュールが私の権限で実行されていませんか? また、これを行うためのより良い方法はありますか?40,000 行以上のファイルで特定の行を見つける必要があります。

ありがとう!

4

1 に答える 1

3

reにシェルアウトするよりも、Python の組み込み正規表現モジュール を使用してこれを行う方がおそらく簡単ですgrep

import re

with open(filename, 'r') as f:
    for line in f:
        if re.search(regex, line):
            print line,

これが質問に直接答えないことはわかっていますが、おそらく根本的な問題に対する正しい解決策です。これは「これを行うためのより良い方法はありますか?」に該当すると思います。あなたの質問の一部。

于 2012-11-09T19:43:47.217 に答える