关于读取文件时遇到的一些问题
今天在做题目的时候发现一些问题:代码1
print("请输入要打开的文件名:",end="")
file_name = input()
file = open(file_name,'r')
file_content = []
for eachline in file:
file_content.append(eachline)
关于这一段代码,如果读取的文件是我用python程序生成的:
print("请输入文件名:",end="")
file_name = input()
f = open(file_name+'.txt','w')
print("请输入内容【单独输入':w'保存退出】:")
file_content = input()
while file_content != ':w':
f.write(file_content+'\n')
file_content = input()
f.close()
通过这样的方式生成的txt文件,就能被代码1正常运作。
但如果是我自己新建的txt文件,就会会报错,情况如下:
请输入要打开的文件名:诗.txt
Traceback (most recent call last):
File "E:\学习\python\全部替换.py", line 6, in <module>
for eachline in file:
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 20: illegal multibyte sequence
希望有懂的鱼油帮我解答一下{:10_284:} 编码问题啊,python躲不掉的伤 wp231957 发表于 2020-4-19 19:05
编码问题啊,python躲不掉的伤
{:10_324:}
那请问以后怎么避免或者遇到了该怎么办呢 cheese_hunter 发表于 2020-4-19 19:10
那请问以后怎么避免或者遇到了该怎么办呢
python3 默认utf8
你自己建立的文件估计是ansi或者gbk https://blog.csdn.net/lqzdreamer/article/details/76549256?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2
编码问题,可以用异常处理 try except 可以参考一下这个帖子:避免打开文本文件出现编码错误的一个小技巧 cheese_hunter 发表于 2020-4-19 19:10
那请问以后怎么避免或者遇到了该怎么办呢
没想到你会选择一个治标不治本的答案 wp231957 发表于 2020-4-19 19:28
没想到你会选择一个治标不治本的答案
手快了,作为初学者我现在更倾向于给txxcat,但是没办法,我不知道怎么撤销或者改。
还是感谢你的回答。 cheese_hunter 发表于 2020-4-19 19:33
手快了,作为初学者我现在更倾向于给txxcat,但是没办法,我不知道怎么撤销或者改。
还是感谢你的回答。
撤不了
你给谁最佳都无所谓,这只是你对问题的一种态度而已 wp231957 发表于 2020-4-19 19:28
没想到你会选择一个治标不治本的答案
怎么才算治本的答案呢,求教 jkluoling1992 发表于 2020-4-19 19:50
怎么才算治本的答案呢,求教
当然是查看你想操作的文件到底是使用了什么编码格式,然后用对应的编码格式去操作该文件 wp231957 发表于 2020-4-19 19:53
当然是查看你想操作的文件到底是使用了什么编码格式,然后用对应的编码格式去操作该文件
意思是走一步看一步咯,因为不确定文本的编码方式,用异常处理就像一个选择,能用utf8 编码打开就直接处理文件,若打开出现异常错误,就选择gbk处理方式,,或者其他方式,总之要保证程序的通用性,,这不是治本的方法么? jkluoling1992 发表于 2020-4-19 19:56
意思是走一步看一步咯,因为不确定文本的编码方式,用异常处理就像一个选择,能用utf8 编码打开就直接处 ...
打住,不想探讨这些没有用的东东
对于楼主来说,还是多了解一些知识,才是王道 wp231957 发表于 2020-4-19 20:00
打住,不想探讨这些没有用的东东
对于楼主来说,还是多了解一些知识,才是王道
那你看过链接里面的东西吗,还是不明白你说的治标不治本
页:
[1]