python自定义库的错误

请问大家这个地址是对的,为啥会报错呀?跟着B站自学的,谢谢!

def print_file_info(file_name):
    f = None
    try:
        f = open(file_name)
        content = f.read()
        print(content)
    except Exception as e:
        print(f'程序出现异常了{e}')
    finally:
        if f :
            f.close()
if __name__ == '__main__':
    print_file_info(r"C:\Users\Administrator\Desktop\bill.txt")

img

和明显是字符编码问题,需要在打开文件的时候设置下

# -*- coding:utf-8 -*-

def print_file_info(file_name):
    f = None
    try:
        f = open(file_name,'r',encoding='gbk')   #如果gbk不行,就试试 utf-8
        content = f.read()
        print(content)
    except Exception as e:
        print(f'程序出现异常了{e}')
    finally:
        if f:
            f.close()

if __name__ == '__main__':
    print_file_info(r"C:\Users\Administrator\Desktop\bill.txt")

要么指定编码(f = open(file_name, encoding='utf-8') ),要么忽略不能解码的字节(f = open(file_name, errors='ignore'))
1.结果图

img

2.结果图

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7800615
  • 这篇博客也不错, 你可以看下python实现:字符串排序问题(快手2019年秋季校园招聘编程题算法B试卷(牛客网))
  • 你还可以看下python参考手册中的 python- 用于操作列表的工具
  • 您还可以看一下 阿勒拉哈老师的Python机器学习实战视频教学!课程中的 回归模型开发流程总结小节, 巩固相关知识点
  • 除此之外, 这篇博客: 基于python的B站评论爬虫及抽奖项目中的 抽奖结果示例 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    问题的原因是在使用open函数打开文件时,没有指定文件的打开模式。

    在Python中,open函数默认以只读模式打开文件,而在你的代码中,在open函数里只传入了文件名,没有指定打开模式。因此,当程序尝试打开文件时,会抛出TypeError异常。

    为了解决这个问题,你可以在调用open函数时,指定文件的打开模式。常用的文件打开模式有:

    • 'r':只读模式
    • 'w':写入模式,如果文件不存在则创建,存在则清空内容
    • 'a':追加模式,如果文件不存在则创建
    • 'x':独占创建模式,如果文件已存在,则抛出FileExistsError异常
    • 'b':以二进制模式打开文件
    • 't':以文本模式打开文件,这是默认模式

    根据你的代码逻辑,你可以将open函数的调用改为如下方式:

    f = open(file_name, 'r')
    

    这样,就明确指定了打开模式为只读模式,即可解决报错的问题。

    修改后的代码如下:

    def print_file_info(file_name):
        f = None
        try:
            f = open(file_name, 'r')
            content = f.read()
            print(content)
        except Exception as e:
            print(f'程序出现异常了{e}')
        finally:
            if f:
                f.close()
    
    if __name__ == '__main__':
        print_file_info(r'C:\Users\Administrator\Desktop\bill.txt')
    

    请注意,使用open函数打开文件后,记得在不使用文件时进行关闭,这是良好的编程习惯。你可以通过f.close()finally块中进行关闭。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^