У меня проблемы с чтением простых текстовых файлов в Python - PullRequest
0 голосов
/ 21 мая 2019

Я только начал Python

У меня проблемы с чтением простых текстовых файлов на python. У меня две ситуации. Я создаю .txt или .docx или .rtf файл. Затем я импортирую его с a=read("file.txt","r").

а отображает:

<_io.TextIOWrapper name='file.txt' mode='r' encoding='UTF-8'>

Затем я создаю переменную для чтения b=a.read() Когда я отображаю b, у меня появляется либо сообщение об ошибке, либо правильное отображение, но оно не только отображает содержимое, как сказано в моем курсе, но и отображает множество вещей. Я вставлю оба сообщения ниже (я пробовал с большим количеством различного текстового содержимого в исходном файле, я не могу видеть шаблон - когда Python говорит, что не может прочитать 16-й символ, он всегда идет к простой букве в оригинале файл).

``

a=open("file.txt","r")
a
<_io.TextIOWrapper name='file.txt' mode='r' encoding='UTF-8'>
b=a.read()
b 

Когда это работает, сообщение:

'{\\rtf1\\ansi\\ansicpg1252\\cocoartf1671\\cocoasubrtf200\n{\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;}\n{\\colortbl;\\red255\\green255\\blue255;}\n{\\*\\expandedcolortbl;;}\n\\paperw11900\\paperh16840\\margl1440\\margr1440\\vieww10800\\viewh8400\\viewkind0\n\\pard\\tx566\\tx1133\\tx1700\\tx2267\\tx2834\\tx3401\\tx3968\\tx4535\\tx5102\\tx5669\\tx6236\\tx6803\\pardirnatural\\partightenfactor0\n\n\\f0\\fs24 \\cf0

этот файл ванильный. Он содержит только буквы и точки.} '

Теперь я пытаюсь использовать другой файл, содержащий другие символы (см. Ниже), и он не работает.

`

a=open("fichier1.docx","r")
a
<_io.TextIOWrapper name='fichier1.docx' mode='r' encoding='UTF-8'>

b=a.read()
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    b=a.read()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd2 in position 16: invalid continuation byte

Второй файл содержит следующее:

Des tomates
Des carottes
Des herbes de Provences
Du thé
De la cannelle

1 Ответ

0 голосов
/ 21 мая 2019

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

with open('file.txt') as f:
  for line in f:
    print(line)

Или вы также можете сохранить все строки файла в списке:

with open('file.txt') as f:
  lines = f.readlines()

И затем вы можете прочитать одну строку, используя:

print(lines[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...