鱼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()
def readFile(fileName):
    file = open(fileName,'r',encoding='utf-8')
    res = file.read()
    file.close()
    return res

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

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

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

for k,v in dicCnts.items():
    if v == most:
        mostComment = k
        break
file.write("\n根据统计,对今天伙食感觉:\n")
file.write("'很满意'的学生{}人;\n".format(dicCnts["很满意"]))
file.write("'满意'的学生{}人;\n".format(dicCnts["满意"]))
file.write("'一般'的学生{}人;\n".format(dicCnts["一般"]))
file.write("'不满意'的学生{}人。\n".format(dicCnts["不满意"]))
file.write("出现次数最多的评语是{}\n".format(mostComment))
file.close()
想知道小甲鱼最近在做啥?请访问 -> 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'
结果对于我来说,还是这个
想知道小甲鱼最近在做啥?请访问 -> 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 ...

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

结果我们聊半天第一个错误,实际上是已经是另一个报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

结 ...

为什么,对于你的电脑可以使用,每次提取文件都会出错,这个代码里有几个打开文件的代码
想知道小甲鱼最近在做啥?请访问 -> 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'

这个是文件找不到错误,注意查看好文件名和文件夹名,路径是否正确即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

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

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

使用道具 举报

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

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

对于有的电脑为什么不需要加编码这问题我也不清楚,小甲鱼当时操作打开文件我就需要加encoding='UTF-8'而小甲鱼却不要。。。我也不清楚为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

不用太客气 如果帮助到你的话~记得给个最佳 嘿嘿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

试试:
def readFile(fileName):
    file = open(fileName,'r')
    res = file.read()
    return res

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

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

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

for k,v in dicCnts.items():
    if v == most:
        mostComment = k
        break
try:
    file.write("根据统计,对今天伙食感觉:\n")
    file.write("'很满意'的学生{}人;\n".format(dicCnts["很满意"]))
    file.write("'满意'的学生{}人;\n".format(dicCnts["满意"]))
    file.write("'一般'的学生{}人;\n".format(dicCnts["一般"]))
    file.write("'不满意'的学生{}人。\n".format(dicCnts["不满意"]))
    file.write("出现次数最多的评语是{}\n".format(mostComment))
    file.close()
except:
    print("error")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

好的,我知道了,谢谢,我还有个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

能不能告诉我如何添加异常处理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

好的我知道了!!!谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

小甲鱼做视频用的时候还是win7,win7文本文件默认编码是GBK,python默认也是GBK,所以不用加参数,但到了win10,文本默认编码是utf-8,python打开就需要加参数了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

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

原来如此!!!
谢谢~ 解决了我的疑惑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 18:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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