Все, что я говорю это в рамках python2Python кодирования объектного файла
Как я знаю, что я могу получить объект файла с помощью встроенного open
функции. И файл-объект имеет атрибут с именем encoding
, используемый для вывода строк Unicode.
Теперь я хочу написать файл со стандартным типом кодировки (не ASCII), я использую encoding
, но он доступен только для чтения, возможно, это разумно.
Затем я попытался codecs
getwriter
обертку (У меня есть файл объект уже), но кажется, что это будет что-нибудь, кодирующий кастрированный баран это Unicode
типа или нет. Как я знаю, файл-файл будет проверять тип содержимого и кодировку файла как при записи.
Затем я проверил код Src питона, тип объекта файла предоставляет метод PyFile_SetEncoding
установить кодировку, но используется только в sys
модуль для stdin
, stdout
и stderr
.
Есть ли способ разрешить файловому объекту кодировать содержимое для записи с использованием типа кодировки по умолчанию, если он имеет тип Unicode
?
И я сомневаюсь, почему PyFile_SetEncoding
предоставляется, но не применяется к нормальным файлам? Похоже, что тип кодировки по умолчанию может быть известен из самого файла, если он не пуст, или указать, какой тип кодирования я хочу записать, по крайней мере, в новый файл. Есть ли модуль, реализующий его?
Или, если я ошибаюсь, скажите, пожалуйста, спасибо.
Вы можете изменить, как файл открывается? Похоже, вы должны использовать ['codecs.open'] (https://docs.python.org/2/library/codecs.html#codecs.open) вместо' open' из встроенного пространства имен. – user2357112
Как я уже сказал, создатель потока кодеков будет кодировать что-либо перед записью. То, что я делаю сейчас, является обычным оберткой. –
Что вы подразумеваете под этим? Вы пытаетесь написать строки Unicode и строки байтов через один и тот же файл-объект, не вызывая 'encode' или' decode'? Это звучит неплохо. – user2357112