Twilight6
发表于 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 = 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()
lovry
发表于 2020-5-18 09:56:46
KevinHu 发表于 2020-5-18 09:53
试试这样:
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: Invalid argument: './C:\\py\\result.txt'
结果对于我来说,还是这个
Twilight6
发表于 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 ...
你前面报错和后面报错是两个东西,实际上你第一个报错已经解决了 出现的第二个报错是编码问题报错
结果我们聊半天第一个错误,实际上是已经是另一个报错
lovry
发表于 2020-5-18 10:00:36
Twilight6 发表于 2020-5-18 09:58
你前面报错和后面报错是两个东西,实际上你第一个报错已经解决了 出现的第二个报错是编码问题报错
结 ...
为什么,对于你的电脑可以使用,每次提取文件都会出错,这个代码里有几个打开文件的代码
Twilight6
发表于 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: Invalid argument: 'C:\\py\\result.txt'
这个是文件找不到错误,注意查看好文件名和文件夹名,路径是否正确即可
lovry
发表于 2020-5-18 10:04:43
Twilight6 发表于 2020-5-18 09:56
这个是编码问题啊open()
太感谢你们了
lovry
发表于 2020-5-18 10:05:29
Twilight6 发表于 2020-5-18 10:03
这个意思是编码错误,换UTF-8编码即可
这个是文件找不到错误,注意查看好文件名和文件夹名,路径是 ...
我知道了,谢谢谢!!!!
Twilight6
发表于 2020-5-18 10:05:50
lovry 发表于 2020-5-18 10:00
为什么,对于你的电脑可以使用,每次提取文件都会出错,这个代码里有几个打开文件的代码
代码有两个open的代码
就有两个打开文件的代码
对于有的电脑为什么不需要加编码这问题我也不清楚,小甲鱼当时操作打开文件我就需要加encoding='UTF-8'而小甲鱼却不要。。。我也不清楚为什么
Twilight6
发表于 2020-5-18 10:06:52
lovry 发表于 2020-5-18 10:05
我知道了,谢谢谢!!!!
以后打开文件记得加 encoding='utf-8' 即可
不用太客气 如果帮助到你的话~记得给个最佳 嘿嘿{:10_287:}
xiaosi4081
发表于 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 = 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")
lovry
发表于 2020-5-18 10:10:22
Twilight6 发表于 2020-5-18 10:06
以后打开文件记得加 encoding='utf-8' 即可
不用太客气 如果帮助到你的话~记得给个最佳 嘿嘿{:10_287: ...
好的,我知道了,谢谢,我还有个问题
lovry
发表于 2020-5-18 10:12:23
lovry 发表于 2020-5-18 10:10
好的,我知道了,谢谢,我还有个问题
能不能告诉我如何添加异常处理
Twilight6
发表于 2020-5-18 10:12:41
lovry 发表于 2020-5-18 10:10
好的,我知道了,谢谢,我还有个问题
嗯呢,你说?
lovry
发表于 2020-5-18 10:17:19
xiaosi4081 发表于 2020-5-18 10:08
试试:
谢谢!!!
Twilight6
发表于 2020-5-18 10:17:20
lovry 发表于 2020-5-18 10:12
能不能告诉我如何添加异常处理
你用的是pycharm , 那么你运行时候这边可以点击直接到代码错误的地方
哪里错了就在哪个代码加try-except即可具体建议看小甲鱼视频 0基础的 异常处理课时
这边打个例子:
def readFile(fileName):
try:
file = open(fileName,'r',encoding='utf-8')
except:
return '文件不存在'
res = file.read()
file.close()
return res
lovry
发表于 2020-5-18 10:18:27
Twilight6 发表于 2020-5-18 10:17
你用的是pycharm , 那么你运行时候这边可以点击直接到代码错误的地方
哪里错了就在哪个代码加try-exc ...
好的我知道了!!!谢谢你
Twilight6
发表于 2020-5-18 10:21:40
lovry 发表于 2020-5-18 10:18
好的我知道了!!!谢谢你
记得设置最佳 {:10_287:}
lovry
发表于 2020-5-18 10:29:27
Twilight6 发表于 2020-5-18 10:21
记得设置最佳
好的
txxcat
发表于 2020-5-18 10:29:56
Twilight6 发表于 2020-5-18 10:05
代码有两个open的代码
就有两个打开文件的代码
小甲鱼做视频用的时候还是win7,win7文本文件默认编码是GBK,python默认也是GBK,所以不用加参数,但到了win10,文本默认编码是utf-8,python打开就需要加参数了。
Twilight6
发表于 2020-5-18 10:31:29
txxcat 发表于 2020-5-18 10:29
小甲鱼做视频用的时候还是win7,win7文本文件默认编码是GBK,python默认也是GBK,所以不用加参数,但到了 ...
原来如此!!!
谢谢~ 解决了我的疑惑