Рейтинг:-2

Python, проблемы с чтением строк в открытом файле с использованием «open ('file_name.txt', 'r')»

флаг in

Я пытаюсь прочитать содержимое текстового файла построчно с помощью этого кода:

импортировать os.path  

file_to_read = открыть ("имя_файла.txt", "r")  
строки = file_to_read.readlines()

Когда я запускаю его, я получаю следующую ошибку:

введите описание изображения здесь

Traceback (последний последний вызов):
Файл "D:/Files/test.py", строка 4, в <module>
строки = file_to_read.readlines()
Файл "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\lib\encodings\cp1252.py", строка 23, в декодировании вернуть codecs.charmap_decode (ввод, self.errors, таблица_декодирования) [0]
UnicodeDecodeError: кодек 'charmap' не может декодировать байт 0x9d в позиции 260: сопоставление символов с <undefined>

Если я уберу последнюю строку, то код будет выглядеть так:

импортировать os.path  

file_to_read = открыть ("имя_файла.txt", "r")  

Тогда я не получаю никаких ошибок.

введите описание изображения здесь

Что указывает мне на проблему с строки = file_to_read.readlines(), но я не вижу в этом ничего плохого.

Ola Ström avatar
флаг in
Здесь также нашел хороший ответ: https://stackoverflow.com/questions/491921/unicode-utf-8-reading-and-writing-to-files-in-python
cocomac avatar
флаг cn
Какую операционную систему ты используешь? Похоже, ваш вопрос [здесь не по теме] (https://askubuntu.com/help/on-topic), потому что вы не используете Ubuntu или официальную производную.Я вижу `D:/Files`, который представляет собой путь в стиле Windows, и ваш скриншот IDLE выглядит как Windows.
Ola Ström avatar
флаг in
Извините, забыл об этом, я использую как Windows, так и Ubuntu попеременно, так что это просто было из Windows прямо сейчас. Мой Ubuntu, который я использую, находится на виртуальной машине на том же компьютере с Windows...
Рейтинг:2
флаг ug

В этом нет ничего плохого строки = file_to_read.readlines(), но это строка, которая фактически читает содержимое файла. открытым() просто открывает его и не приступает к чтению.

Как говорит вам ошибка, python не знает, как декодировать байт 0x9d в позиции 260. Проверьте кодировку файла, а также убедитесь, что файл не поврежден.

Этот ответ может помочь и вам (т. е. явно указать кодировку utf-8 или любую другую кодировку, которую использует файл). По сути,

с open("file_name.txt", "r", encoding="utf-8") как file_to_read:
    ...
Ola Ström avatar
флаг in
'file_to_read = open("file_name.txt", mode="r", encoding="utf-8")' решило проблему...
Рейтинг:1
флаг in

Этот вопрос здесь не по теме. Вы работаете в Windows и спрашиваете о Python, но этот сайт предназначен для вопросов об Ubuntu.

Сказав это, проверьте текстовый файл и позицию, указанную в ошибке, на наличие специального символа, который не является частью utf-8. Что-то вроде символа копирайта, например.

Ola Ström avatar
флаг in
Извините, забыл об этом, я использую оба взаимозаменяемо, поэтому мне просто удалось запустить код в Windows прямо сейчас. Мой Ubuntu находится на виртуальной машине в моей Windows...

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.