FK二十一 发表于 2021-9-20 18:29:36

有哪位大佬解释一下这个报错吗

操作没问题,为啥报错,是内容的问题吗??

小甲鱼的二师兄 发表于 2021-9-20 18:46:36

你可能得加个 encoding="utf-8"

suchocolate 发表于 2021-9-20 18:47:11

默认的文件解码器是gbk,但是txt不是bgk编码的,可能是utf-8,具体看你文件的编码形式了。
换默认解码器:
f=open('text.txt', encoding='utf-8')

白two 发表于 2021-9-20 19:01:37

编码错误,打开的时候指定一下编码就行了
中文编码主要有以下四种:
1.GB2312
2.BIG5
3.GBK
4.UTF-8
一个一个试就行了。

青出于蓝 发表于 2021-9-20 19:40:40

光设置编码有什么用?
f=open('D://很痛苦.txt', encoding='utf-8').read()
需要使用read函数

FK二十一 发表于 2021-9-20 21:33:38

青出于蓝 发表于 2021-9-20 19:40
光设置编码有什么用?

需要使用read函数

为啥呀{:5_104:}

MasoX 发表于 2021-9-20 23:01:53

你这个问题主要是编码的问题,上面的同学说得很清楚了!open里面要加encoding=‘utf-8’
file = open(r'E:\xiehaotao\dianshangjiansuo\ans1_test.txt',encoding='utf-8')

主要要指出的是,不知道你为什么要用循环打出来!一般的文件是(1)打开(2)读取,两步,即下面这样写。
file = open(r'E:\xiehaotao\dianshangjiansuo\ans1_test.txt',encoding='utf-8')
file = file.read()
print(file)

chrisyou188 发表于 2021-9-21 09:03:45

for each in file1:
        print(f.readline())

需要一行一行读取,可以使用readline()方法{:10_297:} {:10_297:} {:10_297:}

晴雨皆宜 发表于 2021-9-21 10:07:25

开卷有益,多多益善·····

Python初学者8号 发表于 2021-9-22 08:48:27

是编码的问题哦>>> fo = open("小米吗.txt")
>>> for l in fo:
    print(l)
   
Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 24: illegal multibyte sequence
>>> fo.close()
>>> fo = open("小米吗.txt",encoding = "utf-8")
>>> for l in fo:
    print(l)
   




我的脑海里有个词叫做应力调整



文件操作分为两种,一个是读一个是写

先说读的操作。主要是通过f = open(路径文件,'?')来实现的,将一个文件读取到内存得到一个文件对象并进行后续的操作,本质是一个数据结构。然后关于这个后面的一般是r,并且默认都是读取的,要写的话就是写w,同时读写的话就是再加上一个+,如果是打开二进制文件的就是加上个b。并且默认是使用GBK编码的文件,如果里面含有中文的话还是需要使用这个utf-8的函数

几个方法:

read(),读取所有,光标从头到尾巴了,返回一个含有所有内容的字符串

readline(),读取一行数据,以\n为结束标志并且一起读进来。返回值为一个含有\n的字符串

readlines()也是读取完,但是是得到一个列表,每个元素相当一次readline一样。

还有一个seek的操作主要是确定这个光标的位置,0就是从头开始,2是文件末尾。只有在读取b模式的二进制文件是可以使用非0的那个偏移量。



接下来是写入

write,直接写,只有一个参数,返回值是写入的字符数目
>>>
页: [1]
查看完整版本: 有哪位大佬解释一下这个报错吗