作者:小仙女 | 来源:互联网 | 2023-06-03 13:17
文章目录前言一、shutil模块1、复制文件和文件夹2、文件和文件夹的移动与改名3、永久的删除文件和文件夹4、用send2trash模块安全删除二、遍历目录树os.walk()三、用zipfile模块
文章目录 前言 一、shutil模块 1、复制文件和文件夹 2、文件和文件夹的移动与改名 3、永久的删除文件和文件夹 4、用send2trash模块安全删除 二、遍历目录树os.walk() 三、用zipfile模块压缩文件 1、读取ZIP文件 2、从ZIP文件中解压 3、创建和添加到ZIP文件 前言
一、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')