1. ホーム
  2. python

[解決済み] Python 2.xで'encoding is an invalid keyword'エラーは避けられないのでしょうか?

2022-02-14 22:09:27

質問

Pythonを使用してAnsiからUTF-8に変換するとエラーが発生します。

私はそこにある答えを試して、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' is an invalid keyword argument for this function" を得ました。

で試してみました。

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でも試してみましたが、同じエラーになりました。

スタックオーバーフローのいくつかの質問から、次のことを知りました。

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では、上記のプログラムはエラーなく動作します。