そこで答えを試して、ansiをutf-8に変換しました。
import io
with io.open(file_path_ansi, encoding='latin-1', errors='ignore') as source:
with open(file_path_utf8, mode='w', encoding='utf-8') as target:
shutil.copyfileobj(source, target)
しかし、「TypeError: 'encoding'はこの関数の無効なキーワード引数です」
私が試した
with io.open(file_path_ansi, encoding='cp1252', errors='ignore') as source:
も、同じエラーが発生しました。
それから私は試した
import io
with io.open(file_path_ansi, encoding='latin-1', errors='ignore') as source:
with io.open(file_path_utf8, mode='w', encoding='utf-8') as target:
shutil.copyfileobj(source, target)
それでも同じエラーが発生しました。また、cp1252でも試しましたが、同じエラーが発生しました。
私はいくつかのstackoverflowの質問からそれを学びました
TypeError: 'encoding' is an invalid keyword argument for this function
python 2.xで頻繁にエラーメッセージが表示されます
しかし、主に回答者は、何らかの方法でpython 3を使用することを提案していました。
python 2.xでansi txtをutf-8 txtに変換することは本当に不可能ですか?(2.7を使用)
Python2.7では、両方の場所でio.open()
を使用します。
import io
import shutil
with io.open('/etc/passwd', encoding='latin-1', errors='ignore') as source:
with io.open('/tmp/goof', mode='w', encoding='utf-8') as target:
shutil.copyfileobj(source, target)
上記のプログラムは、PCでエラーなしで実行されます。
これは、Python 2(通常のファイルオブジェクトを使用するだけ)でansiをutf-8に変換する方法です。
with open(file_path_ansi, "r") as source:
with open(file_path_utf8, "w") as target:
target.write(source.read().decode("latin1").encode("utf8"))
TypeError: 'encoding'はこの関数の無効なキーワード引数です
open('textfile.txt', encoding='utf-16')
Ioを使用すると、2.7と3.6の両方で動作しますpythonバージョン
import io
io.open('textfile.txt', encoding='utf-16')
ファイルにバイトを書き込もうとすると、同じ問題が発生しました。私のポイントは、バイトがすでにエンコードされているということです。したがって、エンコーディングキーワードを使用すると、エラーが発生します。