cheese_hunter 发表于 2020-4-19 19:03:07

关于读取文件时遇到的一些问题

今天在做题目的时候发现一些问题:
代码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:}

wp231957 发表于 2020-4-19 19:05:13

编码问题啊,python躲不掉的伤

cheese_hunter 发表于 2020-4-19 19:10:27

wp231957 发表于 2020-4-19 19:05
编码问题啊,python躲不掉的伤

{:10_324:}
那请问以后怎么避免或者遇到了该怎么办呢

wp231957 发表于 2020-4-19 19:17:18

cheese_hunter 发表于 2020-4-19 19:10
那请问以后怎么避免或者遇到了该怎么办呢

python3 默认utf8
你自己建立的文件估计是ansi或者gbk

jkluoling1992 发表于 2020-4-19 19:17:58

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

txxcat 发表于 2020-4-19 19:24:05

可以参考一下这个帖子:避免打开文本文件出现编码错误的一个小技巧

wp231957 发表于 2020-4-19 19:28:21

cheese_hunter 发表于 2020-4-19 19:10
那请问以后怎么避免或者遇到了该怎么办呢

没想到你会选择一个治标不治本的答案

cheese_hunter 发表于 2020-4-19 19:33:24

wp231957 发表于 2020-4-19 19:28
没想到你会选择一个治标不治本的答案

手快了,作为初学者我现在更倾向于给txxcat,但是没办法,我不知道怎么撤销或者改。
还是感谢你的回答。

wp231957 发表于 2020-4-19 19:34:58

cheese_hunter 发表于 2020-4-19 19:33
手快了,作为初学者我现在更倾向于给txxcat,但是没办法,我不知道怎么撤销或者改。
还是感谢你的回答。

撤不了
你给谁最佳都无所谓,这只是你对问题的一种态度而已

jkluoling1992 发表于 2020-4-19 19:50:55

wp231957 发表于 2020-4-19 19:28
没想到你会选择一个治标不治本的答案

怎么才算治本的答案呢,求教

wp231957 发表于 2020-4-19 19:53:19

jkluoling1992 发表于 2020-4-19 19:50
怎么才算治本的答案呢,求教

当然是查看你想操作的文件到底是使用了什么编码格式,然后用对应的编码格式去操作该文件

jkluoling1992 发表于 2020-4-19 19:56:15

wp231957 发表于 2020-4-19 19:53
当然是查看你想操作的文件到底是使用了什么编码格式,然后用对应的编码格式去操作该文件

意思是走一步看一步咯,因为不确定文本的编码方式,用异常处理就像一个选择,能用utf8 编码打开就直接处理文件,若打开出现异常错误,就选择gbk处理方式,,或者其他方式,总之要保证程序的通用性,,这不是治本的方法么?

wp231957 发表于 2020-4-19 20:00:11

jkluoling1992 发表于 2020-4-19 19:56
意思是走一步看一步咯,因为不确定文本的编码方式,用异常处理就像一个选择,能用utf8 编码打开就直接处 ...

打住,不想探讨这些没有用的东东
对于楼主来说,还是多了解一些知识,才是王道

jkluoling1992 发表于 2020-4-19 20:02:43

wp231957 发表于 2020-4-19 20:00
打住,不想探讨这些没有用的东东
对于楼主来说,还是多了解一些知识,才是王道

那你看过链接里面的东西吗,还是不明白你说的治标不治本
页: [1]
查看完整版本: 关于读取文件时遇到的一些问题