我在读取python中的简单文本文件时遇到问题

时间:2019-05-21 15:25:48

标签: python file encoding

我刚开始使用Python

我在读取python中的简单文本文件时遇到问题。我有两种情况。我创建一个.txt或.docx或.rtf文件。 然后,我用a=read("file.txt","r")导入它。

a显示:

<_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 :(得分:0)

我建议您不要像这样在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])