Ошибка "кодирование является недопустимым ключевым словом" в python 2.x?
Ansi to UTF-8 с использованием ошибки python
Я попробовал ответить там, чтобы преобразовать 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 в той или иной форме.
Неужели невозможно преобразовать ansi txt в utf-8 txt в python 2.x? (Я использую 2.7)
Ответы
Ответ 1
Для 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)
Вышеупомянутая программа работает без ошибок на моем ПК.
Ответ 2
Вот как вы можете преобразовать ansi в utf-8 в Python 2 (вы просто используете обычные объекты файла):
with open(file_path_ansi, "r") as source:
with open(file_path_utf8, "w") as target:
target.write(source.read().decode("latin1").encode("utf8"))
Ответ 3
У меня была такая же проблема, когда я пытался писать байты в файл.
Поэтому я хочу сказать, что байты уже закодированы. Поэтому, когда вы используете ключевое слово для кодирования, это приводит к ошибке.