2011-11-13 19 views
1

非ASCII文字を含むファイルのディレクトリ(およびそのサブディレクトリ)に見える小さなPythonプログラムを書きました。非ASCII文字を検索するループファイル拡張子 - Python

私はそれを改善したいと思います。この「ディレクトリ」内の特定のファイルは、非ASCII文字を持つことがサポートされているZIP、DTA/OUT、OMX、SFD/SF3などのファイルであることがわかります。だから私はこれらがあることを知り、ASCII文字を含んではならないものをスクリーニングします。なぜなら私の最終的な目的は、非ASCII文字を含んでいてはならないファイルを見つけて削除することです(TB値重要なデータの)。私は、私はコードを書くために始めたとき

try: 
    content.encode('ascii') 
    output.write(str(counter) + ", " + file + ", ASCII\n") 
    print str(counter) + " ASCII file status logged successfully: " + file 
    counter += 1 

except UnicodeDecodeError: 
    output.write(str(counter) + ", " + file + ", non-ASCII\n") 
    print str(counter) + " non-ASCII file status logged successfully: " + file 
    counter += 1 

私の考えは、さらに次のようになりますPythonでブロックを除く試みの一部/「以外」にあるファイルに目を通すことですファイルが'.zip''.sfd' pr '.omx'などであるかどうかを尋ねながらループすることがわかりました。

ファイル拡張子のグループを1つずつ検索する方法はありますか?おそらく、これらの拡張子を含むファイルがありますか?それとも私が考えなかったこと?これが愚かな質問であれば私の謝罪を前もって謝っていますが、Pythonにはたくさんのクールな機能があり、私は何かを逃していると確信しています。

乾杯。

+0

シンプルな除外リストより優れた解決策があると思いますが、そのようにするのは遅くないと知っているので、単純な正規表現や文字列比較を行っています。 – brc

+0

あなたの心が正しい用語を身につけるのに役立つかもしれません。ほぼすべての現代システムでは、ファイルには文字は含まれていないバイトが含まれています。したがって、128以上のバイト値を探しています。これらは「非ASCII」バイトです。改行やタブなどのコントロールを除外したい場合は、32未満の特定のバイト値と127の値を探します。 – wberry

+0

用語のレッスンをありがとう...私はそのように考えようとします。これらのタイプの問題に関する私の全体的な見通しに役立ちます。 – nicorellius

答えて

0

私は何か答えがないので、私は先に進み、部分的な答えで自分自身に答えることができます。私は基本的には別のアプローチを取って、この共有のために豊富であると予想される特定のファイルを探して、各ファイルに対して同じことを行います。それは一種のハッキーですが、それはj obを行うでしょう。

関連する問題