我刚开始使用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
答案 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])