第九章 文件与文件夹操作
第九章 文件与文件夹操作
一、文件的概念与分类
1、文本文件:
.log,txt,word,可以用记事本打开的文件
2、二进制文件:
数据库文件,图像文件,office文档等 ,不能用记事本打开的文件。需用特定软件进行增删改查。
二、文件操作基本知识
1、open()函数
open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=Node)
文件打开模式
模式 | 说明 |
---|---|
r | 读模式,默认 |
w | 写模式,文件存在,清空原来内容;文件不存在,创建新文件 |
x | 写模式,创建新文件,文件存在抛异常 |
a | 追加模式,不覆盖原来内容 |
b | 二进制模式(与r,w,x,a组合使用),使用时不指定encoding参数 |
t | 文本模式,默认可省 |
+ | 读,写模式 |
2、文件对象常用方法:
使用open()打开返回一个文件对象,通过该文件可以对文件进行读写操作。入选
方法 | 功能说明 |
---|---|
close() | 把缓冲区的内容写入文件,同时关闭文件,释放文件对象 |
read([size]) | 文本文件读取范围size个文本,二进制文件读取返回size个字节,缺省返回所有内容 |
readline() | 读取并返回一行内容 |
readlines() | 返回包含文本文件中每行内容的列表 |
write(s) | 把s写进内容 |
writelines(s) | 把列表s的所有内容写入文本文件 |
3、上下文管理语句with
保证文件正常打开关闭
with open(filename,mode,encoding) as fp:
#文件读写操作
s='regjhrjeg 是乱码吗'
with open('sample.txt','w',encoding='utf8') as fp
fp.write(s)
with open('sample.txt',encoding='utf8') as fp
print(fp.read())
三、JSON文件操作
json轻量级的数据交换格式,相关方法如下:
方法 | 功能说明 |
---|---|
dumps() | 把对象序列化为字符串 |
loads() | 把json格式的字符串还原为Python对象 |
dump() | 把数据序列化并直接写入文件 |
load() | 读取json格式文件并直接还原为Python对象 |
四、CSV文件操作
import csv
fn='data.csv'
#newline=''不插入空行
with open(fn,'w',newline='') as fp:
wr=csv.writer(fp)
wr.writerow('日期','销售额')
五、经典文件标准库
1.os模块
函数 | 说明 |
---|---|
chdir(path) | 把path设置当前工作文件夹 |
getcwd() | 返回当前工资目录 |
listdir(path) | 返回path路径下文件和子文件夹列表 |
mkdir(path) | 创建文件夹,存在时报错 |
rmdir(path) | 删除指定文件夹,要求改文件夹不能有文件或者子文件夹 |
remove(path) | 删除指定文件 |
rename(src,dsc) | 重命名 |
startfile(filepath[,operation]) | 使用关联的应用程序打开指定文件或者启动指定应用程序 |
2、os.path模块
方法 | 说明 |
---|---|
abspath(path) | 返回绝对路径 |
basename(path) | |
dirname(p) | 返回给定路径的文件夹部分 |
exists(path) | 判断是否存在 |
getatime(filename) | 返回文件最后一次访问时间 |
getctime(filename) | 返回文件创建时间 |
getmtime(filename) | 返回文件最后一次修改时间 |
getsize(filename) | 返回文件大小 |
isdir(path) | 是否为文件夹 |
isfile(path) | 是否为文件 |
join(path,*paths) | 连接多个path |
split(path) | 以\分隔路径,并返回元组 |
splitext(path) | 分割文件扩展名,返回元组 |
splitdrive(path) | 分隔驱动器名称,返回元组 |
3、shutil模块
方法 | 说明 |
---|---|
copy(src,dst) | |
copyfile(src,dst) | |
copytree(src,dst) | |
disk_usage(path) | 查看磁盘情况 |
move(src,dst) | |
rntree(path) | 递归删除文件夹 |
make_archive(base_name,format,) | 创建tar或者zip文件 |
unpack_archive() | 解压缩 |