1、文件操作
1.1 导入模块
import os
import shutil
1.2 打开文件
open(name, mode)
file = open("new_file.txt", "w")
name:是要打开的目标文件名的字符串 (可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式): 只读、写入、追加等。
r | 以只读方式打开文件。文件的指针将会放在文件的开头。(默认模式) |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
b | 二进制模式(可添加到其它模式使用) |
+ | 读写模式(可添加到其它模式使用) |
注意:文件名要么r''转义,要么使用\\,要么/。
拓展:‘b’参数一般在mp3或者图像一类媒体文件中使用,‘rb’就是读取二进制文件。
1.3 删除文件
os.remove('文件名'):删除文件,不能删除目录
os.unlink('文件名'):删除文件,不能删除目录
shutil.unlink('文件名'):删除文件,不能删除目录
import os
import shutil
os.remove("new_dile.txt")
os.unlink("new_dile.txt")
shutil.unlink("new_dile.txt")
1.4 读取文件
.read([size]) :按字节读取,可选参数,用于指定一次最多可读取的字符(字节)个数,如果省略,则默认一次性读取所有内容。--返回字符串
.readline([size]):按行读取,可选参数,用于指定读取每一行时,一次最多读取的字节数,不选默认一行。
.readlines():按行读取,一次性读取所有行并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。--返回列表
1.5 写入文件
.write('内容'):将任意内容写入文件。
.writerlines(['内容’]):用于将字符串列表写入文件。
1.6 移动文件
shutil.move(要移动的文件/文件夹,要移动的位置)
两种方式使用:
- 第二个参数是文件夹位置,则移动到文件夹下面
- 第二个参数是文件路径,移动到这个路径并且重命名
注意:如果是文件夹后面一定要加'/'
。
1.7 复制文件
shutil.copy(要复制的文件,要复制到的位置)
两种方式使用:
- 第二个参数写某个文件夹位置,则复制到该文件夹下。
- 第二个参数写文件路径,复制到这个路径并且重命名。
1.8 重命名文件
os.rename(要重命名的文件/文件夹,新的文件/文件夹):文件和文件夹重命名通用
1.4 关闭文件
.close():writer写入文件必须关闭文件,否则报错。
拓展:with语句--用于替代close方法
with open("路径") as 名称
1.5 获取文件信息
os.scandir():读取到的参数如下
- st_size: 文件的体积大小(单位:bytes),除以10024就是KB ;
- st_atime: 文件的最近访问时间 ;
- st_mtime:文件的最近修改时间;
- st_ctime:Windows下表示创建时间;
- st_birthtime:只在Mac、Linux下可用,表示创建时间。
1.6 匹配文件名称
1.6.1 内置方法
startswith()方法:用于检索字符串是否以指定字符串开头,是返回 True;反之返回 False。
endswith()方法:用于检索字符串是否以指定字符串结尾,是则返回 True;反之则返回 False
1.6.2 glob模块
import glob
print(glob.glob('*.py'))
print(glob.glob('**/*.txt',recursive=True))
模式 | 意义 |
---|---|
* | 匹配所有 |
? | 匹配任何单个字符 |
[seq] | 匹配seq中的任何字符 |
[!seq] | 匹配任何不在seq中的字符 |
2、文件夹操作
2.1 创建文件夹
os.mkdir(文件夹名字)
2.2 删除文件夹
os.rmdir(文件夹名字)
2.3 复制文件夹
shutil.copytree(要复制的文件夹,要复制到的新文件夹位置)
2.4 移动文件夹
shutil.move(要移动的文件/文件夹,要移动的位置)
2.5 重命名文件夹
os.rename(要重命名的文件/文件夹,新的文件/文件夹)
2.6 删除文件夹
shutil.rmtree(要删除的文件夹)
2.7 获取文件夹里文件列表
os.listdir(文件夹名字) --返回列表
里面可能存在其他文件夹,判断是文件还是文件夹:
os.path.isdir(file)
os.path.isfile(file)
2.8 路径拼接
os.path.join('My', 'service'):'My'一路径,'service'二路径
Windows中采用反斜杠(\\)作为作为文件夹之间的分隔符(# My\\service)
3、压缩包操作
3.1 导入模块
import zipfile
3.2 读取压缩包文件
zipfile.ZipFile('压缩包.zip','r')
3.3 解压压缩包
zipobj.extract(压缩包要解压的文件名,解压到的位置)
3.4 将所有的文件都提取出来
.extractall(解压到的位置)
3.5 创建压缩包
zipobj.write(待压缩文件名)
import zipfile
file_list = ['a.txt','b.txt','c.txt']
# 写入压缩包
with zipfile.ZipFile('压缩包.zip','w') as zipobj:
# 循环遍历待写入文件
for file in file_list:
zipobj.write(file)
3.6 中文乱码解决方案
for file_name in zipodj.namelist():
print(file_name.encode('cp437').decode('gbk'))