Python文件操作常用的API(open函数使用)

本文介绍了Python中open函数的使用,包括文件路径、模式和编码参数。讨论了不同操作系统默认编码的差异,以及如何处理因编码不匹配导致的错误。通过实例展示了with语句管理文件操作,并探讨了文件对象作为迭代器的细节。建议查阅open函数的官方文档以获取更多详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打开文件,获取文件对象

fp = open(file, mode, encoding)
# file:要操作的文件路径, 使用的时候注意目录的拼接
# mode: 打开方式
# encoding: 编码方式
  • 关于第一个参数file需要注意的是:
    文件的路径,使用的时候要注意文件目录的拼接,在项目里时常会有人忘记拼接路径而出错。

路径问题查阅: os.path

  • 关于第二个参数mode:
    在这里插入图片描述

  • 关于第三个参数encoding需要注意的是:
    这个指定用来指定编码方式,通常不指定,系统会自动识别。

    举例下面这个我曾经遇到的情况来说明问题:
    不同操作系统上,默认的编码是不一样的,这个需要注意,比如在windows操作系统上,默认新建的文件的编码格式是gbk的,linux上则是默认的unicode。
    写入文件的数据如果需要指定编码格式,比如我使用requests库爬取网页,将response的内容保存到文件中,写入文件时候会出错,而且response是一个HTML文件,保存之后用浏览器打开,也有可能出现了页面乱码的问题,那么这个时候就需要指定该参数。

import requests

response = requests.get('https://www.baidu.com')

with open('baidu.html', 'w+') as f:
    f.write(response.text)

运行文件会报错如下:
UnicodeEncodeError: 'gbk' codec can't encode character '\xe7' in position 318: illegal multibyte sequence

这就是写入的数据的编码格式与系统默认文件格式不同导致的,第一次进行代码修改,结果如下

import requests

response = requests.get('https://www.baidu.com')

with open('baidu.html', 'w+', encoding='utf-8') as f:
    f.write(response.text)

修改之后没有出现了错误,但是用浏览器打开保存的HTML文件,会发现页面乱码的问题,当然,这个乱码的根本原因就是字符集的问题(浏览器也有默认打开文件的编码方式,如果有乱码的问题,考虑以下这个问题,还有response返回的HTML文件的charset我们使用的百度的charset是UTF-8的,当然这个编码格式问题不是我们这篇文章主要研讨的),我们以open函数的使用来寻求以下两种解决方式:

import requests

response = requests.get('https://www.baidu.com')


with open('baidu.html', 'w+', encoding='utf-8') as f:
    # response.content是bytes类型的内容,对bytes数据进行编码
    f.write(response.content.decode('utf-8'))

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值