私はエンコーディングとPython I/Oのドキュメントを読んできましたが、プログラミングには少し慣れていないのであまり理解していません。私は、テキストファイルを読み込み、各行を別のテキストファイルに保存しようとしています。しかし、これらの行のいくつかは日本語の文字で表示され、印刷されるとPython IDEに正しく表示されますが、ファイル内のテキストは空です。これは私がやろうとしているものです:書き込み先のファイルが空です。
filename = 'test.txt' # File with the japanese characters
filename2 = 'test2.txt'
text = open(filename,'rb') # I've tried opening it as 'utf-8' too
text2 = open(filename2,'w',encoding='utf-8') # Output file
for line in text:
new_line = line.decode() # From bytes to utf-8
print(new_line) # Just to check
text2.write(new_line)
# Checking if file was written
text3 = open(filename2,'r',encoding='utf-8')
for line2 in text3:
print(line2 + 'something')
このコードは、単に入力ファイルからの行を印刷しますが、出力ファイルに何があるか印刷する最後のビットを使用している場合、それは何も出力しません。私はLinux上でこれを試しています。出力ファイルtest2.txtは空ですが、英語の行はありません。これをWindows上で実行しようとすると、charmapが.write()を使用して文字や何かを認識できないというエラーが発生します。日本語の行をすべて削除しても、うまくいきます。私はまた、バイトの代わりにutf-8エンコーディング(すでにその方法で保存されていますが、その場合に保存されています)で入力ファイルを開いてみましたが、同じ結果です。
念のため、これは日本のラインの一つである:
▣世界から解放され▣
あなたは私を助けることを願って:)
編集:私はよPython 3.5.2を使用します。
あなたは決してファイルをフラッシュしないでください。 –
試してみてください:https://stackoverflow.com/questions/6048085/writing-unicode-text-to-a-text-file – minterm
ファイルをチェックする方法は、Pythonコードの横に空ですか?サンプルを実行すると、utf-8がエンコードされたファイルが生成されます。 – pvg