0

いくつかのファイル操作タスクを処理するのに役立つプログラムがあります。次のように、操作するファイルのリストを作成します。

useful_files = [file for file in os.listdir(self.operatingDirs[0])
                if re.match(this_task_re, file)]

次に、それらを処理します。ときどき、ユーザーに何をしているかを伝えます。

for file_name in useful_files:
    pub.sendMessage("LOG MESSAGE", msg = "Checking folders for %s" % file_name)

ヨーロッパのユーザーがこのプログラムを使用すると、次のように失敗し始めます。

File "usefulfilefolder.pyc", line 310, in _DeduceDropBoxFolders UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position 14: ordinal not in range(128)

sendMessageコール との回線で。

os.listdirsエラーは、取得したファイル名をメッセージ文字列に挿入しようとしたために生成されたようです。

IE: ファイル システムから取得したファイル名を直接出力できないようです。

これは正しいです?

これにどのように対処すればよいですか?

同じファイルを参照するために他のファイルシステム操作で使用できるように、listdirs から取得した名前を保持する必要があることに注意してください....

ありがとう!

(注 - ライブラリがサポートされていないため、現時点では簡単に Python3 にアップグレードできません)

(以下のコメントで行われたポイントを明確にするために編集されました)

4

3 に答える 3

0

これに対する最善の解決策は次のとおりです。

from __future__ import unicode_literals
于 2014-01-01T16:58:40.233 に答える
0

まず、utf-8 などの適切なエンコーディングでファイルを作成します。http://www.python.org/dev/peps/pep-0263/

次に、エラーが発生した場所で some_string.decode('the encoding') を使用します。

于 2013-09-14T12:44:12.970 に答える