Tom学编程 发表于 2020-8-21 09:50:13

文件打开后无法read

Q1:为什么file1会报错,我看小甲鱼的视频课里也没加encoding参数啊?
Q2:如果文件打开后不关闭,会有什么后果?


>>> file1=open('D:\\Learn\\Python_study\\document.txt')
>>> file1.read()
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
    file1.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 4: illegal multibyte sequence
>>> file1.close()
>>> file2=open('D:\\Learn\\Python_study\\document.txt',encoding='UTF-8')
>>> file2.read()
'小客服'
>>> file2.close()

Twilight6 发表于 2020-8-21 09:52:53

本帖最后由 Twilight6 于 2020-8-21 09:56 编辑



文本编码和你 open 打开编码不一致就会导致报错,电脑记事本默认可能是 utf-8 的编码格式写入的文件

所以你需要加上 encoding = 'UTF-8',将你文本另存为时候编码改成 ANSI 就可以不用加 encoding = 'UTF-8' 参数了:

https://xxx.ilovefishc.com/forum/202005/25/072650zqq1fqqmng421bqz.jpg

这里选择 utf-8 就需要加上 encoding = 'UTF-8'
https://xxx.ilovefishc.com/forum/202005/25/072647nvzjv2zemvgxet5g.jpg

这里选择 ANSI 就可以不用加上encoding 参数
https://xxx.ilovefishc.com/forum/202006/22/222937li4vv400i6v44b6z.png

heidern0612 发表于 2020-8-21 09:54:48

因为windows默认编码是GBK,而python3的默认解码方式为utf-8,,你得统一下。

不统一就会报错。

Hello. 发表于 2020-8-21 09:54:58

本帖最后由 Hello. 于 2020-8-21 09:56 编辑

# -*- coding: UTF-8 -*-

Tom学编程 发表于 2020-8-21 09:56:27

Twilight6 发表于 2020-8-21 09:52
文本编码和你 open 打开编码不一致就会导致报错,将你文本另存为为 ANSI 就可以不用加 encoding = 'UTF ...

明白了,谢谢!
第二个问题呢?

Twilight6 发表于 2020-8-21 09:57:22

Tom学编程 发表于 2020-8-21 09:56
明白了,谢谢!
第二个问题呢?



如果你写入文件时候没有正常关闭文件,那么缓存中的内容就不会写入文件中去

Tom学编程 发表于 2020-8-21 09:58:22

谢谢!

1q23w31 发表于 2020-8-21 09:58:41

Tom学编程 发表于 2020-8-21 09:56
明白了,谢谢!
第二个问题呢?

文件打开,不关闭,其他程序无法使用此文件,对文件的更改也不会立马应用

Tom学编程 发表于 2020-8-21 10:09:02

Twilight6 发表于 2020-8-21 09:57
如果你写入文件时候没有正常关闭文件,那么缓存中的内容就不会写入文件中去

如果不是写入文件,关不关闭都一样是吧?

Twilight6 发表于 2020-8-21 10:16:32

Tom学编程 发表于 2020-8-21 10:09
如果不是写入文件,关不关闭都一样是吧?


嗯,但是如果你代码中需要再次用到这个文件时候,会导致无法打开,因为此时已经被占用了
页: [1]
查看完整版本: 文件打开后无法read