鱼C论坛

 找回密码
 立即注册
查看: 1400|回复: 9

[已解决]文件打开后无法read

[复制链接]
发表于 2020-8-21 09:50:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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()
最佳答案
2020-8-21 09:52:53
本帖最后由 Twilight6 于 2020-8-21 09:56 编辑



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

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


                               
登录/注册后可看大图


这里选择 utf-8 就需要加上 encoding = 'UTF-8'

                               
登录/注册后可看大图


这里选择 ANSI 就可以不用加上encoding 参数

                               
登录/注册后可看大图

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-21 09:52:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-8-21 09:56 编辑



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

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


                               
登录/注册后可看大图


这里选择 utf-8 就需要加上 encoding = 'UTF-8'

                               
登录/注册后可看大图


这里选择 ANSI 就可以不用加上encoding 参数

                               
登录/注册后可看大图

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-21 09:54:48 | 显示全部楼层
因为windows默认编码是GBK,而python3的默认解码方式为utf-8,,你得统一下。

不统一就会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-21 09:54:58 | 显示全部楼层
本帖最后由 Hello. 于 2020-8-21 09:56 编辑

# -*- coding: UTF-8 -*-
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

明白了,谢谢!
第二个问题呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-21 09:57:22 | 显示全部楼层
Tom学编程 发表于 2020-8-21 09:56
明白了,谢谢!
第二个问题呢?



如果你写入文件时候没有正常关闭文件,那么缓存中的内容就不会写入文件中去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-21 09:58:22 | 显示全部楼层
谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-21 09:58:41 | 显示全部楼层
Tom学编程 发表于 2020-8-21 09:56
明白了,谢谢!
第二个问题呢?

文件打开,不关闭,其他程序无法使用此文件,对文件的更改也不会立马应用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-21 10:09:02 | 显示全部楼层
Twilight6 发表于 2020-8-21 09:57
如果你写入文件时候没有正常关闭文件,那么缓存中的内容就不会写入文件中去

如果不是写入文件,关不关闭都一样是吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-21 10:16:32 | 显示全部楼层
Tom学编程 发表于 2020-8-21 10:09
如果不是写入文件,关不关闭都一样是吧?


嗯,但是如果你代码中需要再次用到这个文件时候,会导致无法打开,因为此时已经被占用了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 07:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表