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,所以不用加参数,但到了 ...

原来如此!!!
谢谢~ 解决了我的疑惑
页: 1 2 [3]
查看完整版本: 求助