鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: lovry

[已解决]求助

[复制链接]
发表于 2020-5-18 09:56:39 | 显示全部楼层    本楼为最佳答案   
lovry 发表于 2020-5-18 09:55
Traceback (most recent call last):
  File "C:/python/pycharm/study/venv/7练习.py", line 13, in
...

这个是编码问题啊  open()
  1. def readFile(fileName):
  2.     file = open(fileName,'r',encoding='utf-8')
  3.     res = file.read()
  4.     file.close()
  5.     return res

  6. def countComments(result):
  7.     resList = result.split(',')
  8.     commentCnts = {}
  9.     for res in resList:
  10.       commentCnts[res] = commentCnts.get(res, 0) + 1
  11.     return commentCnts

  12. result = readFile("C:\\py\\result.txt")
  13. dicCnts = countComments(result)
  14. print()

  15. file = open("C:\\py\\result.txt",'a',encoding='utf-8')
  16. most=max(dicCnts.values())

  17. for k,v in dicCnts.items():
  18.     if v == most:
  19.         mostComment = k
  20.         break
  21. file.write("\n根据统计,对今天伙食感觉:\n")
  22. file.write("'很满意'的学生{}人;\n".format(dicCnts["很满意"]))
  23. file.write("'满意'的学生{}人;\n".format(dicCnts["满意"]))
  24. file.write("'一般'的学生{}人;\n".format(dicCnts["一般"]))
  25. file.write("'不满意'的学生{}人。\n".format(dicCnts["不满意"]))
  26. file.write("出现次数最多的评语是{}\n".format(mostComment))
  27. file.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 09:56:46 | 显示全部楼层

Traceback (most recent call last):
  File "C:/python/pycharm/study/6.1.py", line 13, in <module>
    result = readFile("C:\\py\\result.txt")
  File "C:/python/pycharm/study/6.1.py", line 2, in readFile
    file = open('./'+fileName,'r')
OSError: [Errno 22] Invalid argument: './C:\\py\\result.txt'
结果对于我来说,还是这个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 09:58:28 | 显示全部楼层
lovry 发表于 2020-5-18 09:56
Traceback (most recent call last):
  File "C:/python/pycharm/study/6.1.py", line 13, in
    res ...

你前面报错和后面报错是两个东西,实际上你第一个报错已经解决了 出现的第二个报错是编码问题报错

结果我们聊半天第一个错误,实际上是已经是另一个报错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 10:00:36 | 显示全部楼层
Twilight6 发表于 2020-5-18 09:58
你前面报错和后面报错是两个东西,实际上你第一个报错已经解决了 出现的第二个报错是编码问题报错

结 ...

为什么,对于你的电脑可以使用,每次提取文件都会出错,这个代码里有几个打开文件的代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 10:03:47 | 显示全部楼层
lovry 发表于 2020-5-18 10:00
为什么,对于你的电脑可以使用,每次提取文件都会出错,这个代码里有几个打开文件的代码
Traceback (most recent call last):
  File "C:/python/pycharm/study/venv/7练习.py", line 13, in <module>
    result = readFile("C:\\py\\result.txt")
  File "C:/python/pycharm/study/venv/7练习.py", line 3, in readFile
    res = file.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0x8f in position 8: illegal multibyte sequence

这个意思是编码错误,换UTF-8编码即可
Traceback (most recent call last):
  File "C:/python/pycharm/study/6.1.py", line 13, in <module>
    result = readFile("C:\\py\\result.txt")
  File "C:/python/pycharm/study/6.1.py", line 2, in readFile
    file = open('+fileName,'r')
OSError: [Errno 22] Invalid argument: 'C:\\py\\result.txt'

这个是文件找不到错误,注意查看好文件名和文件夹名,路径是否正确即可
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 10:04:43 | 显示全部楼层
Twilight6 发表于 2020-5-18 09:56
这个是编码问题啊  open()

太感谢你们了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 10:05:29 | 显示全部楼层
Twilight6 发表于 2020-5-18 10:03
这个意思是编码错误,换UTF-8编码即可

这个是文件找不到错误,注意查看好文件名和文件夹名,路径是 ...

我知道了,谢谢谢!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 10:05:50 | 显示全部楼层
lovry 发表于 2020-5-18 10:00
为什么,对于你的电脑可以使用,每次提取文件都会出错,这个代码里有几个打开文件的代码

代码有两个open的代码
就有两个打开文件的代码

对于有的电脑为什么不需要加编码这问题我也不清楚,小甲鱼当时操作打开文件我就需要加encoding='UTF-8'而小甲鱼却不要。。。我也不清楚为什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 10:06:52 | 显示全部楼层
lovry 发表于 2020-5-18 10:05
我知道了,谢谢谢!!!!

以后打开文件记得加 encoding='utf-8' 即可

不用太客气 如果帮助到你的话~记得给个最佳 嘿嘿
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 10:08:26 | 显示全部楼层
lovry 发表于 2020-5-18 08:54
我尝试过了,还是没用

试试:

  1. def readFile(fileName):
  2.     file = open(fileName,'r')
  3.     res = file.read()
  4.     return res

  5. def countComments(result):
  6.     resList = result.split(',')
  7.     commentCnts = {}
  8.     for res in resList:
  9.       commentCnts[res] = commentCnts.get(res, 0) + 1
  10.     return commentCnts

  11. result = readFile("C:\\py\\result.txt")
  12. dicCnts = countComments(result)

  13. file = open("C:\\py\\result.txt",'a')
  14. most=max(dicCnts.values())

  15. for k,v in dicCnts.items():
  16.     if v == most:
  17.         mostComment = k
  18.         break
  19. try:
  20.     file.write("根据统计,对今天伙食感觉:\n")
  21.     file.write("'很满意'的学生{}人;\n".format(dicCnts["很满意"]))
  22.     file.write("'满意'的学生{}人;\n".format(dicCnts["满意"]))
  23.     file.write("'一般'的学生{}人;\n".format(dicCnts["一般"]))
  24.     file.write("'不满意'的学生{}人。\n".format(dicCnts["不满意"]))
  25.     file.write("出现次数最多的评语是{}\n".format(mostComment))
  26.     file.close()
  27. except:
  28.     print("error")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 10:10:22 | 显示全部楼层
Twilight6 发表于 2020-5-18 10:06
以后打开文件记得加 encoding='utf-8' 即可

不用太客气 如果帮助到你的话~记得给个最佳 嘿嘿{:10_287: ...

好的,我知道了,谢谢,我还有个问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 10:12:23 | 显示全部楼层
lovry 发表于 2020-5-18 10:10
好的,我知道了,谢谢,我还有个问题

能不能告诉我如何添加异常处理
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 10:12:41 | 显示全部楼层
lovry 发表于 2020-5-18 10:10
好的,我知道了,谢谢,我还有个问题

嗯呢,你说?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 10:17:19 | 显示全部楼层

谢谢!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 10:17:20 | 显示全部楼层
lovry 发表于 2020-5-18 10:12
能不能告诉我如何添加异常处理

111.png
你用的是pycharm , 那么你运行时候这边可以点击直接到代码错误的地方
哪里错了就在哪个代码加try-except即可  具体建议看小甲鱼视频 0基础的 异常处理课时
这边打个例子:
  1. def readFile(fileName):
  2.     try:
  3.         file = open(fileName,'r',encoding='utf-8')
  4.     except:
  5.         return '文件不存在'
  6.     res = file.read()
  7.     file.close()
  8.     return res
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 10:18:27 | 显示全部楼层
Twilight6 发表于 2020-5-18 10:17
你用的是pycharm , 那么你运行时候这边可以点击直接到代码错误的地方
哪里错了就在哪个代码加try-exc ...

好的我知道了!!!谢谢你
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 10:21:40 | 显示全部楼层
lovry 发表于 2020-5-18 10:18
好的我知道了!!!谢谢你

记得设置最佳
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 10:29:27 | 显示全部楼层

好的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 10:29:56 | 显示全部楼层
Twilight6 发表于 2020-5-18 10:05
代码有两个open的代码
就有两个打开文件的代码

小甲鱼做视频用的时候还是win7,win7文本文件默认编码是GBK,python默认也是GBK,所以不用加参数,但到了win10,文本默认编码是utf-8,python打开就需要加参数了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2020-5-18 10:31:29 | 显示全部楼层
txxcat 发表于 2020-5-18 10:29
小甲鱼做视频用的时候还是win7,win7文本文件默认编码是GBK,python默认也是GBK,所以不用加参数,但到了 ...

原来如此!!!
谢谢~ 解决了我的疑惑
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 05:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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