文件操作是实现数据持久化的重要手段
一、文件操作基础
(一)打开文件
#使用 open() 函数打开文件,需要指定文件路径和打开模式。
f = open('1.txt', mode='w', encoding='utf-8')参数说明
file:文件路径,可以是相对路径或绝对路径。
mode:打开模式,默认为 'r'(只读模式)。
'r':只读模式,文件必须存在。
'w':覆盖写模式,如果文件存在则清空内容,如果不存在则创建。
'a':追加写模式,如果文件存在则在末尾追加内容,如果不存在则创建。
encoding:编码格式,默认为 None。常见的编码格式有 utf-8、gbk、gb2312、gb18030 等。
(二)读写文件
1. 读取文件内容
read():读取文件的全部内容,返回一个字符串。
readline():逐行读取一行内容,返回一个字符串。
readlines():读取文件的全部内容,返回一个列表,每行内容为一个元素。
f = open('1.txt', mode='r', encoding='utf-8')
content = f.read() # 读取全部内容
print(content)
content = f.readline() # 逐行读取一行内容
print(content)
content = f.readlines() # 读取多行内容
print(content)2. 写入文件内容
write():写入内容,返回写入的字符数。
writelines():写入多行内容,参数为一个字符串列表。
f = open('1.txt', mode='w', encoding='utf-8')
f.write('哈哈哈\n') # 写入内容
f.writelines(['hello\n', '123']) # 写入多行内容3. 指针操作
seek():设置文件指针的位置。
tell():返回文件指针的当前位置。
f.seek(5) # 设置指针位置
content = f.read() # 从指针位置开始读取
print(content)
print(f.tell()) # 返回指针位置(三)关闭文件
使用 close() 方法关闭文件,释放系统资源。
f.close()二、文件上下文管理器
文件上下文管理器可以自动管理文件的打开和关闭,确保文件在使用后正确关闭。
with open('1.txt', mode='w', encoding='utf-8') as f:
f.write('hello python')
print(111) # 文件在上下文管理器结束后自动关闭三、文件类型
(一)文本文件
文本文件是以文本形式存储的数据,常见的格式有 .txt、.csv、.ini 等。
示例:读写文本文件
# 写入文本文件
with open('demo.txt', mode='w', encoding='utf-8') as f:
f.write('hello python')
# 读取文本文件
with open('demo.txt', mode='r', encoding='utf-8') as f:
content = f.read()
print(content)(二)二进制文件
二进制文件是以二进制形式存储的数据,常见的格式有图片(.jpg、.png)、视频(.mp4)、音频(.mp3)等。
示例:下载图片
import requests
url = 'https://i0.hdslb.com/bfs/archive/af6cb3bd7ca47b5aac1e853d0e586363f47f0d95.jpg'
resp = requests.get(url)
print(resp.content) # 返回二进制数据
# 写入二进制文件
with open('demo.jpg', mode='wb') as f:
f.write(resp.content)示例:下载视频
import requests
url = 'https://v3-web.douyinvod.com/08d4e6ad52bf99678351471d93f88d64/669a01c2/video/tos/cn/tos-cn-ve-15/oY1AQWFEnoNu06AKAiDAIscx9vmgzBaAf8EmfJ/?a=6383&br=1034&bt=1034&btag=c0000e00038000&cd=0%7C0%7C0%7C3&ch=5&cquery=101s_100B_100H_100K_100o&cr=3&cs=0&cv=1&dr=0&ds=6&dy_q=1721357469&feature_id=f0150a16a324336cda5d6dd0b69ed299&ft=4TMWc6DhppftDFLB.s2.C_fauVq0In-WnXtc6BYqDdk6HQdHDDO4ekps4BaM7usZ.&is_ssr=1&l=2024071910510854F4A5856F7E7E7EFB50&lr=all&mime_type=video_mp4&qs=0&rc=OTpnOmc0NGQ2ZjU0ZDs6M0Bpandmd3I5cmV2czMzNGkzM0BiXmFiLTIvNi4xMGMwLi80YSMyLS9vMmRram1gLS1kLWFzcw%3D%3D'
headers = {
"Referer": "https://www.douyin.com/",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
resp = requests.get(url, headers=headers)
print(resp.content) # 返回二进制数据
# 写入二进制文件
with open('demo.mp4', mode='wb') as f:
f.write(resp.content)四、文件操作练习
(一)修改文件内容
# 打开文件,读取内容
with open('demo.txt', mode='r+', encoding='utf-8') as f:
content = f.readlines()
print(content)
# 修改第一行内容
content[0] = 'world\n'
print(content)
# 将指针移回文件开头
f.seek(0)
f.writelines(content)五、总结
本文详细介绍了 Python 中的文件操作,包括文件的打开、读写、关闭,以及文件上下文管理器的使用。同时,还介绍了如何处理文本文件和二进制文件。通过掌握这些内容,可以更好地实现数据的持久化存储。