このトピックに関する決定的なガイドと思われるものを含め、このトピックについてはすでにかなりの量を読みました: http://docs.python.org/howto/unicode.html
より経験豊富な開発者にとっては、このガイドで十分かもしれません。ただし、私の場合は、開始時よりも混乱しており、まだ問題が解決していません。
os.walk() を使用してファイル名を読み取り、ファイルに関する特定の情報 (ファイルサイズなど) を取得してから、その情報をテキスト ファイルに書き込もうとしています。これは、ファイル名が utf でエンコードされたファイルに遭遇しない限り機能します。utf でエンコードされた名前のファイルにヒットすると、次のようなエラーが発生します。
WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: 'Documents\\??.txt'
その場合、ファイルの名前は唽咿.txt でした。
これが私がこれまでにやろうとしてきた方法です:
for (root, dirs, files) in os.walk(dirpath):
for filename in files:
filepath = os.path.join(root, filename)
filesize = os.stat(filepath).st_size
file = open(filepath, 'rb')
stuff = get_stuff(filesize, file)
file.close()
重要な場合、dirpath は、'dirpath = raw_input()' に相当するコードの初期部分に由来します。
ファイルパス行を次のように変更するなど、さまざまなことを試しました。
filepath = unicode(os.path.join(unicode(root), unicode(filename)))
しかし、私が試したことは何もありません。
ここに私の2つの質問があります:
正しいファイル名を os.stat() メソッドに渡して正しい応答を得るにはどうすればよいですか?
私のスクリプトは、いくつかのファイル名をテキスト ファイルに書き込む必要があり、後で読み取ることができます。その時点で、テキスト ファイルから読み取った内容に基づいてファイルを検索できる必要があります。このようなファイル名をテキスト ファイルに適切に書き込み、後で適切に読み取るにはどうすればよいですか?