os.walkを使用してハードドライブからユーザーのファイルを読み取るPython2.7で記述されたアプリケーションがあります。
Unicode文字を含むファイル(たとえば、アーティスト名が含まれるオーディオファイル)を処理するため、アプリケーションにはUTF-8システムロケールが必要です(起動する前にenv変数を確認します)。これらのファイルをファイルシステムへの正しいファイル名。
一部のユーザーはUTF-8ロケール(したがってUTF-8 fs)を使用していますが、それでもどういうわけかISO-8859-1ファイルをドライブに保存できます。これにより、コードがこれらのディレクトリをos.walk()しようとすると、PythonがUTF-8を使用してISO-8859-1バイトのこのシーケンスをデコードしようとしたときに例外をスローするため、問題が発生します。
だから私の質問は、os.walk()全体を中止するのではなく、Pythonにこのファイルを無視して次のファイルに移動させるにはどうすればよいですか?自分のos.walk()関数をロールするだけでいいですか?
編集:これまで、ファイル名を修正するためにconvmv linuxコマンドを使用するようにユーザーに指示してきましたが、多くのユーザーはさまざまな種類のエンコーディング(8859-1、8859-2など)を使用しており、convmvを使用するにはユーザーが必要ですそれぞれに対してconvmvを個別に実行する前に、どのファイルがどのエンコーディングを使用しているかについて、知識に基づいて推測します。