0

たくさんのサブディレクトリがあるディレクトリがあり、各サブディレクトリには多くのcsvファイルがありますが、特定のcsvファイルにのみ関心があります。したがって、次のpythonメソッドを記述しましたが、ファイル名をキャプチャできません。*。csvを実行すると、すべてのファイルが検出されますが、すべてのファイルを読み込みたくありません。

def gatherStats(template_file, csv_file):
    for lang in getLanguageCodes(csv_file):
        lang_dir = os.path.join(template_file, lang)
        try:
            for file in os.listdir(lang_dir):
                if fnmatch.fnmatch(file, '*-*-template-users-data.csv'):
                    t_file = open(file, 'rb').read()
                    reader = csv.reader()
                    for row in reader:
                        print row
                else:
                    print "didn't find the file"
        except Exception, e:
            logging.exception(e)

私はここで何が間違っているのですか?正規表現の問題ですか?fnmathで正規表現を使用できますか?

4

2 に答える 2

1

コードにはいくつかの問題があります。最初にそれらを修正してください。そうすれば、あなたの問題が実際に何であるかを突き止めることができます。

  • まず、組み込みの名前を変数として使用しないでくださいfile。むしろそれを。に置き換えてfilenameください。
  • 次にos.path.join(lang_dir, filename)、ファイルを開く前に。意味:

    t_file = open(os.path.join(lang_dir, filename), 'rb').read()
    
  • reader = csv.reader()この行で開いているファイルオブジェクトを参照しない場合、ファイルをどのように読み取ると思いますか?

  • あなたのtry/exceptブロックは私の好みには少し広すぎます。時間をかけて、実際に発生する可能性のあるエラーを絞り込みます。次に、それらのどれを無視し、どれをプログラムをクラッシュさせるかを決定します。このブロックで実際にスローされる例外をよく見てください。あなたはおそらくそこにあなたの問題を見つけるでしょう。
于 2013-03-14T17:50:12.430 に答える
0

別のユーザーの助けを借りて、私はなんとか問題を解決することができました。コミュニティの将来の参考のために、この回答をここに置いています。

def gatherStats(template_file, csv_file):
    for lang in getLanguageCodes(csv_file):
        lang_dir = os.path.join(template_file, lang)
        try:
            for filename in os.listdir(lang_dir):
                path = os.path.join(lang_dir, filename)
                if re.search(r'-.+-template-users-data.csv$',filename):
                    with open(path, 'rb') as template_user_data_file:
                        reader = csv.reader(template_user_data_file)
                        try:
                            for row in reader:
                                print row
                        except csv.ERROR as e:
                            logging.error(e)
                else:
                    print "didn't find the file"
        except Exception, e:
            logging.exception(e)
于 2013-03-14T20:14:55.767 に答える