web-dev-qa-db-ja.com

python 2.x?で「エンコードは無効なキーワードです」というエラーは避けられませんか?

pythonエラーの原因となるUTF-8へのANSI)

そこで答えを試して、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を使用)

39
user3123767

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でエラーなしで実行されます。

64
Robᵩ

これは、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"))
12
Thomas Hobohm

TypeError: 'encoding'はこの関数の無効なキーワード引数です

open('textfile.txt', encoding='utf-16')

Ioを使用すると、2.7と3.6の両方で動作しますpythonバージョン

import io
io.open('textfile.txt', encoding='utf-16')

ファイルにバイトを書き込もうとすると、同じ問題が発生しました。私のポイントは、バイトがすでにエンコードされているということです。したがって、エンコーディングキーワードを使用すると、エラーが発生します。

1
Taras Vaskiv