1

私は単純なコードを機能させようとしていますが、残念ながら私は Python の初心者です。

私のスクリプトは、パターンに一致しないファイルのリストを返す必要があります。詳細については、こちらをご覧ください: python grep reverse matching

私のコードは実行されていますが、見つかったファイルの完全なリストを処理しません:

import sys,os

filefilter = ['.xml','java','.jsp','lass']

path= "/home/patate/code/project"

s = "helloworld"

for path, subdirs, files in os.walk(path):

   for name in files:

      if name[-4:] in filefilter :

         f = str(os.path.join(path, name))

         with open(f) as fp:

             if s in fp.read():

                print "%s has the string" % f

             else:

                print "%s doesn't have the string" % f

このコードは次を返します。

/home/patate/code/project/blabla/blabla/build.xml に文字列がありません

なし

変更するf = str(os.path.join(path, name)) for print str(os.path.join(path, name)) と、リスト全体が印刷されているのがわかります。

希望どおりにリスト全体を処理するにはどうすればよいですか?

4

1 に答える 1

0

os.path.splitextを使用して、一致するファイル拡張子を確認してみてください。

for path, subdirs, files in os.walk(path):
    for name in files:
        if os.path.splitext(name)[1] in filefilter:
            f = str(os.path.join(path, name))
            with open(f) as fp:
                if s in fp.read():
                    print "%s has the string" % f
                else:
                    print "%s doesn't have the string" % f

残りはうまく見えます。

于 2010-05-26T06:51:43.667 に答える