Работа с файлами

Администратор
Андрей Столяров
Медаль
Сообщений: 252
Санкт-Петербург
116 дней назад
Вспомогательный, но важный момент:

Преобразование кодировки

Приведён один из способов преобразования кодировки, причём наиболее неприятный момент, на который хочется обратить внимание, что, по всей видимости, не все символы кодировки DOS (cp866) присутствуют в кодировке Windows (cp1251).
Поэтому пришлось добавить преобразование
Код PYTHON:
  1. s=i.replace("│","|")
одного такого символа , который встречался в файле (могут быть и другие, более общий вариант следует делать либо через словарь, либо с помощью обработки исключений)
Ещё одно предупреждение: у DOS-файлов в конце строки присутствует не один, а пара специальных символов "\r\n"


Код PYTHON:
  1. # Программа преобразования файла в кодировке DOS (cp866) в кодировку Windows (cp1251)
  2. import codecs
  3. def main():
  4. filename = 'dat.res'
  5. f = open(filename, "rb")#Читаем файл в двоичном (бинарном - b) формате
  6. data=f.read()
  7. f.close()
  8. text = data.decode('cp866', 'replace').split('\n')#Преобразуем в текст
  9. filename = 'dat.txt'
  10. f = open(filename, "w")
  11. for i in text:
  12. print(i)
  13. s=i.replace("│","|") #Заменяем символ "│" кодировки cp866, который отсутствует в кодировке cp1251
  14. f.write(s+"
  15. ")
  16. f.close()
  17.  
  18. if __name__ == '__main__':
  19. main()
Редактировалось: 5 раз (Последний: 30 марта 2015 в 23:12)
|
Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.