python_aini 发表于 2021-1-16 20:28:57

30课后作业-4

Traceback (most recent call last):
File "d:/learn/2020-1-16/30-4、4.py", line 57, in <module>
    search_files(key, detail)
File "d:/learn/2020-1-16/30-4、4.py", line 47, in search_files
    key_dict = search_in_file(each_txt_file, key)
File "d:/learn/2020-1-16/30-4、4.py", line 26, in search_in_file
    for each_line in f:
File "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 21: invalid start byte


在open参数中加入了UTF-8依旧出现无法解码的情况,这是为啥?大佬们

jackz007 发表于 2021-1-16 20:57:46

       UTF-8 并不是万能的,只有文件中的字符确实采用了 "UTF-8" 编码的时候,才是合适的,你应该把出错的文件名称和路径显示出来,用记事本打开这个文件,看看能不能正常看到里面的内容。

python_aini 发表于 2021-1-16 21:05:05

jackz007 发表于 2021-1-16 20:57
UTF-8 并不是万能的,只有文件中的字符确实采用了 "UTF-8" 编码的时候,才是合适的,你应该把出错的 ...

文件没有问题,我刚刚加入了‘+w’可以了,但是程序直接就跳过了,没有显示 出来,我用 print打印显示了
<function search_in_file at 0x000001FED861BCA0>
和作业的答案不一样啊

昨非 发表于 2021-1-16 21:48:56

本帖最后由 昨非 于 2021-1-16 21:55 编辑

python_aini 发表于 2021-1-16 21:05
文件没有问题,我刚刚加入了‘+w’可以了,但是程序直接就跳过了,没有显示 出来,我用 print打印显示了
...

检查一下你调用search_in_file函数的时候括号加了吗

只有带上括号的调用才会返回函数执行的结果,
不带括号返回的是函数本身

python_aini 发表于 2021-1-16 21:55:06

昨非 发表于 2021-1-16 21:48
检查一下你调用search_in_file函数的时候括号加了吗

def search_in_file(file_name, key):
    f = open(file_name, '+w')
加了的

昨非 发表于 2021-1-16 21:56:40

python_aini 发表于 2021-1-16 21:55
def search_in_file(file_name, key):
    f = open(file_name, '+w')
加了的

我是说调用的时候

python_aini 发表于 2021-1-16 22:07:00

昨非 发表于 2021-1-16 21:56
我是说调用的时候

我觉得我有必要再重新过几遍视频教学了...

昨非 发表于 2021-1-16 22:09:16

python_aini 发表于 2021-1-16 22:07
我觉得我有必要再重新过几遍视频教学了...

你可以对比下你的代码和答案的区别
除了编码外肯定还有不同之处的
先看看也行哈{:10_245:}稳住

python_aini 发表于 2021-1-16 22:10:00

昨非 发表于 2021-1-16 22:09
你可以对比下你的代码和答案的区别
除了编码外肯定还有不同之处的
先看看也行哈稳住

{:5_100:}
页: [1]
查看完整版本: 30课后作业-4