目录
Python 提供了丰富的文件操作功能,允许你读取、写入、追加、删除文件以及管理文件路径等。
文件是啥?
windows系统下大致分为以下几种:
- 文本文件:包含可读字符的文件,如.txt .csv .py .html等
- 二进制文件:包含不可直接读的原始二进制数据的文件,如.exe .jpg .mp3等
- 可执行文件:可以被操作系统执行的文件,如.exe
- 数据文件:用于存储应用程序数据的文件,如数据库文件、配置文件等
- 目录/文件夹:用于组织和管理其他文件的特殊文件
这里我们着重讲一下文本文件和二进制文件
文本文件
- 文本文件是由单一特定编码组成的文件,如UTF-8编码。
- 由于存在编码,文本文件也被看成是存储着数据的长字符串
二进制文件
- 直接由比特0和1组成,没有统一字符编码
- 一般都存在二进制0和1的组织结构,即文件格式
s = "这是一串数据"
print("文本文件:", s)
print("二进制文件:", s.encode())
文件的位置——路径
加入我们以后做了一个脚本,我们是如何让程序有条不紊地在别人的电脑上也运行呢,这就涉及的到绝对路径和相对路径的概念了,每个人的同一种文件在各自电脑上存放的绝对路径都可能不一样,所以脚本软件这类多用相对路径
绝对路径:
带有盘符的或者带有网址的
C:\Users\admin\Desktop\py_gj\py_day3
相对路径:
./py_gj/py_day3
../py_gj/py_day3
文件操作(重点来了)
打开文件open
open(file, [mode='r', buffering=-1, encoding=None])
参数:
- file: 必需,文件路径(相对或者绝对路径)
- mode: 可选,文件打开模式,默认为r
- buffering: 可选,设置缓冲
- encoding: 可选,一般使用utf-8
其中
常见的模式包括:
'r'
:读取模式(默认)。'w'
:写入模式,会覆盖文件内容。'a'
:追加模式,会在文件末尾追加内容。'b'
:二进制模式,用于非文本文件(如图片)。'+'
:更新模式,比如'r+'
表示可读可写。
读取文件
# 读取整个文件内容
content = file.read()
# 读取文件的一行
line = file.readline()
# 读取文件的所有行,并返回一个列表
lines = file.readlines()
注意: readline()方法会记住上一个readline()读取的位置,接着读取下一行。
# 读取整个文件内容
content = file.read()
# 读取文件的一行
line = file.readline()
# 读取文件的所有行,并返回一个列表
lines = file.readlines()
readlines读取文件的所有行,返回值是一个列表
写入文件
使用
write()
方法将内容写入文件(在'w'
或'a'
模式下)
file = open('example.txt', 'w')
file.write('Hello, World!\n')
file.close()
关闭文件
完成文件操作后,应使用
close()
方法关闭文件,以释放系统资源。
file.close()
with语句
with
语句可以确保文件在使用后自动关闭,即使在文件操作过程中发生异常。
with open('example.txt', 'r') as file:
content = file.read()
文件指针定位
python中文件读写,定位文件读写的指针会随着不断地读写而移动。所以我们想要正确的读写,就需要控制指针的定位。
f.tell()
功能:返回文件的当前位置,即文件指针当前位置
f.seek(offset[, whence])
功能:将文件内部光标定位到指定的位置
参数:offset:开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0,
0代表从文件开头开始算起
1代表从当前位置开始算起
2代表从文件末尾算起
eg:
f.seek(p,0) 移动到文件第p个字节处,绝对位置
f.seek(p,1) 移动到相对于当前位置之后的p个字节
f.seek(p,2) 移动到相对文章尾之后的p个字节
f.seek(0,0) 移动到文件开头
目录操作 (浅讲)
import os
try:
os.mkdir('./t1')
except Exception as e:
print(e)
try:
os.rmdir('./t1')
except Exception as e:
print(e)
try:
os.makedirs('./t1/t2')
except Exception as e:
print(e)
习题💯
将 1-100 之间能被 5 整除的数保存在列表 numbers 中
1. 将 numbers 中的元素写入到文件 num.txt 中
2. 使用文件操作方式打开 num.txt 文件读取内容,并计算它们的平均数
解答:(答案不统一)
numbers=[i for i in range(1,101) if i % 5 ==0]
with open('./6-9.txt', mode="w") as f:
numbers_s=' '.join(map(str,numbers))
f.write(numbers_s)
with open('./6-9.txt', mode='r',encoding='utf-8') as f:
data = f.read()
print(data)
l2=list(map(int, data.split()))
pinjun=sum(l2)/len(l2)
print(pinjun)