文章目录
前言
一、shutil模块
shutil模块中包含一些函数,能复制、移动、删除、改名文件。
1、复制文件和文件夹
shutil.copy(source,destination)
#将路径source处的文件复制到路径destination处的文件夹;
#如果ddestination是一个文件名,将作为被复制文件的新名字
#函数返回一个字符串,表示被复制的路径
import shutil,os
os.chdir('/Users')
#destination是一个路径
shutil.copy('/Users/qwe/Desktop/产品.docx','/Users/qwe/Desktop/pyrhon_work')
#destination是一个文件名
shutil.copy('/Users/qwe/Desktop/产品.docx','/Users/qwe/Desktop/pyrhon_work/jianli.docx')
/Users/qwe/Desktop/pyrhon_work/产品.docx
/Users/qwe/Desktop/pyrhon_work/jianli.docx
#shutil.copytree()复制整个文件夹,以及它包含的而文件和文件夹
os.chdir('/Users')
r=shutil.copytree('/Users/qwe/Desktop/becan','/Users/qwe/Desktop/becan_kup')
2、文件和文件夹的移动与改名
#shutil.move(source,destination);
#将路径source处的文件复制到路径destination处的文件夹;
#函数返回新位置的绝对路径的字符串。
#如果destination指向一个文件夹,source文件将移动到destination中,并保持原来的文件名。
shutil.move('/Users/qwe/Desktop/pyrhon_work/answerfile18.txt','/Users/qwe/Desktop')
#如果destination是一个文件名,source文件会被改名。
shutil.move('/Users/qwe/Desktop/pyrhon_work/answerfile24.txt','/Users/qwe/Desktop/ans.txt')
#如果destination不存在,Python会假定这个文件而不是文件夹,answerfile25.txt文本文件被改名为www,没有txt文件扩展名的文本文件
shutil.move('/Users/qwe/Desktop/pyrhon_work/answerfile25.txt','/Users/qwe/Desktop/www')
/Users/qwe/Desktop/answerfile18.txt
/Users/qwe/Desktop/ans.txt
/Users/qwe/Desktop/www
3、永久的删除文件和文件夹
- os.unlink(path)删除path处的文件;
- os.rmdir(path)删除path处空文件和文件夹;
- shutil.rmtree(path)删除path处的文件夹,会删除文件夹包含的所有文件和文件夹。
import os
import shutil
for filename in os.listdir('/Users/qwe/Desktop/pyrhon_work/未命名文件夹'):
if filename.endswith('.txt'):
os.unlink(filename)
import os
import shutil
os.rmdir('/Users/qwe/Desktop/pyrhon_work/未命名文件夹')
import os
import shutil
shutil.rmtree('/Users/qwe/Desktop/1')
4、用send2trash模块安全删除
因为shutil.rmtree 永久的删除文件不可恢复,而send2trash会将文件和文件夹发送到计算机回收站,不会永久删除。
二、遍历目录树os.walk()
os.walk()返回3个值:
- 当前文件夹名称的字符串
- 当前文件夹中子文件夹的字符串的列表
- 当前文件夹中文件的字符串的列表
import os
import shutil
for folderName,subfolders,fileNames in os.walk('/Users/qwe/Desktop'):
print("这个文件名是:"+folderName)
for subfolder in subfolders:
print("子文件夹的"+folderName+':'+subfolder)
for fileName in fileNames:
print("文件夹中的文件名"+folderName+':'+fileName)
三、用zipfile模块压缩文件
1、读取ZIP文件
- 创建ZIPfile对象,调用zipfile.ZipFile()函数,向他传入一个字符串,表示zip 文件的文件名;
- ZipFile对象有一个namelist()方法,返回ZIP文件中包含的所有文件和文件夹的字符串的列表;
- namelist()返回的列表可以传给ZipFile对象的getinfo()方法,但会一个关于ZipFile的特定文件,如表示字节数的file_size和compress_size,分别表示原来的文件大小和压缩后的文件大小
import os,zipfile
os.chdir('/Users/qwe/Desktop')
#创建一个ZipFile对象
examplezip=zipfile.ZipFile('/Users/qwe/Desktop/练习答案.zip')
#调用ZipFile对象的namelist方法,赋值给变量
filelist=examplezip.namelist()
#遍历返回的字符串列表
for x in filelist:
#调用getinfo()
file=examplezip.getinfo(x)
filesize=file.file_size
filecompress=file.compress_size
print("压缩前的文件大小是:"+str(filesize)+','+"压缩后的而文件大小是:"+str(filecompress))
压缩前的文件大小是:0,压缩后的而文件大小是:0
压缩前的文件大小是:47385,压缩后的而文件大小是:44435
压缩前的文件大小是:27512,压缩后的而文件大小是:24545
压缩前的文件大小是:601341,压缩后的而文件大小是:522965
压缩前的文件大小是:736058,压缩后的而文件大小是:690380
压缩前的文件大小是:220362,压缩后的而文件大小是:197697
2、从ZIP文件中解压
- extractall()方法从ZIP文件中解压所有文件和文件夹,放到当前工作目录中。
examplezip=zipfile.ZipFile('/Users/qwe/Desktop/配套资源翻译.zip')
examplezip.extractall('/Users/qwe/Desktop/配套资源翻译')
examplezip.close()
3、创建和添加到ZIP文件
- 创建压缩文件,必须要以写模式打开ZipFile对象,传入第二个参数’w’;
- 调用write() 方法第一个参数是一个字符串,表示要添加的文件名,第二个参数是压缩类型。
examplezip=zipfile.ZipFile('abc.zip','w')
examplezip.write('/Users/qwe/Desktop/12杰.xlsx','compress_typr=zipfile.ZIP_DEFLATED')