文件的打开与关闭
打开文件
open(file, mode='r', encoding='UTF-8')
# 若open()调用成功,返回一个文件对象
mode:文件打开模式
- r/rb:(默认值)只读方式打开文本文件/二进制文件,若文件不存在,打开失败
- w/wb:只写方式打开文本文件/二进制文件,若文件已存在则重写文件,否则创建新文件
- a/ab:追加方式打开文本文件/二进制文件,只允许在文件末尾追加数据,若文件不存在则创建新文件
- r+/rb+:以读写方式打开文本文件/二进制文件,若文件不存在,打开失败
- w+/wb+:以读写方式打开文本文件/二进制文件,若文件已存在则重写文件,否则创建新文件
- a+/ab+:以读写方式打开文本文件/二进制文件,只允许在文件末尾追加数据,若文件不存在则创建新文件
encoding:编码方式,常用UTF-8
关闭文件
file.close()
with语句
当打开与关闭操作较多时,容易遗漏关闭操作。可以使用with语句预定义清理操作、实现文件自动关闭
with open(file) as f:
# 文件操作代码区
pass
# 变量 f 用于接收打开的文件对象,使用完毕后with语句自动关闭文件 f
为什么要及时关闭文件?
- 打开的文件会占用系统资源
- 若文件以缓冲方式打开,磁盘文件与内存间的读写并非即时的,若程序异常关闭,可能造成数据丢失。
读文件
(1)read()
file.read(n=-1)
参数n
- -1:一次性读取并返回文件所有数据
- 不提供:一次性读取并返回文件所有数据
- n>0:读取n个字节的数据
read()读取数据是连续的,不会从头开始。
with open(file,'r','UTF-8') as f:
print(f.read(3))
print(f.read()) # 该条语句从第四个字节开始读
(2)readline()
file.readline()
读取一行数据
(3)readlines()
file.readline(hint=-1)
一次性读取所有数据,若成功返回一个列表。
hint:读取的字节数,用于控制要读取的行数,若数据大小超过hint,则停止读取更多的行
(4)使用注意
若文件较大,通常多次调用read()每次少量读取,避免程序占用过多的内存资源
写文件
(1)write()
file.write(data)
若写入成功返回本次写入文件的字节数。
data:写入文件的数据
(2)writelines()
file.writelines(lines)
将行列表写入文件
lines:字符串或字符串列表,若需要换行在字符串添加换行符
定位读写文件
(1)tell()
file.tell()
返回文件当前读写的位置
(2)seek()
file.seek(offset, start)
控制文件读写位置,调用成功后会返回当前文件读写位置。
offset:相对文件读写位置的偏移量
start:指定文件读写位置
- 0:文件开头
- 1:当前读写位置
- 2:文件末尾
with open(file,'r','UTF-8') as f:
print(f.tell())
loc = f.seek(5,0) # 指定文件读写位置为开头,偏移5个字节
print(loc)
print(f.tell())
'''
0
5
5
'''
文件与目录管理
Python中对文件与目录管理需要使用os模块
import os
删除文件 remove()
os.remove(file)
file:文件名或文件路径
文件重命名 rename()
os.rename(old_name, new_name)
old_name:原文件名
new_name:新文件名
创建目录 mkdir()
os.mkdir(dir)
dir:目录名或目录路径
创建目录 rmdir()
os.rmdir(dir)
dir:目录名或目录路径
获取当前目录 getcwd()
os.getcwd()
返回当前工作目录的绝对路径
更改默认目录 chdir()
os.chdir(path)
更改文件或文件夹操作的默认目录
path:目录名或目录路径
获取文件名列表 listdir()
dir_list = os.listdir(path)
返回文件名列表
path:目录名或目录路径