非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にはたくさんのクールな機能があり、私は何かを逃していると確信しています。
乾杯。
シンプルな除外リストより優れた解決策があると思いますが、そのようにするのは遅くないと知っているので、単純な正規表現や文字列比較を行っています。 – brc
あなたの心が正しい用語を身につけるのに役立つかもしれません。ほぼすべての現代システムでは、ファイルには文字は含まれていないバイトが含まれています。したがって、128以上のバイト値を探しています。これらは「非ASCII」バイトです。改行やタブなどのコントロールを除外したい場合は、32未満の特定のバイト値と127の値を探します。 – wberry
用語のレッスンをありがとう...私はそのように考えようとします。これらのタイプの問題に関する私の全体的な見通しに役立ちます。 – nicorellius