python组织文件知识点

来源:互联网 发布:十年数据库管理员 编辑:程序博客网 时间:2024/05/01 21:47
9、组织文件


shutil模块:




9.1复制文件和文件夹


调用shutil.copy(source,destination)函数,将路径source出的文件复制到路径destination处的文件夹,如果destination是一个文件名,他将作为被复制的文件的新名字。


该函数返回一个字符串,表示被复制文件的路径




>>> import shutil
>>> shutil.copy('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\4.bat','C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\quiz')
'C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\quiz\\4.bat'




shutil.copy(source,destination)复制一个文件,而shutil.copytree(source,destination)将复制整个文件夹,以及它包含的文件夹和文件;将路径source出的文件夹以及它的所有文件和子文件夹
复制到路径destination处的文件夹,如果destination是一个文件名,他将作为被复制的文件的新名字。


该函数返回一个字符串,表示被复制文件的路径


>>> shutil.copytree('C:\\Users\\Nick\\Desktop\\Appium','C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\quiz\\1')
'C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\quiz\\1'








9.2文件和文件夹的移动与改名


调用shutil.move(source,destination)函数,将路径source出的文件移动到路径destination,并返回新位置的绝对路径的字符串


如果destination指向一个文件夹,source文件将移动到destination中,并保持原来的文件名,如果destination中存在相同文件名,move方法将会覆写该文件


>>> shutil.move('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\quiz\\1\\appium-1.6.4-beta.zip','C:\\Users\\Nick\\Desktop\\python\\drawing\\2')
'C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\appium-1.6.4-beta.zip'


文件和文件夹改名:
>>> shutil.move('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\quiz\\1\\android-sdk-windows.zip','C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\111.zip')
'C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\111.zip'


9.3永久删除文件和文件夹


利用os模块中的函数可以删除一个文件或一个空文件夹,但是利用shutil模块,可以删除一个文件夹及其所有内容


调用os.unlink(path)将删除path处的文件


调用os.rmdir(path)将删除path处的文件夹,但是该文件夹必须为空,其中没有任何文件和文件夹


调用shutil.rmtree(path)将删除path处的文件夹,它包含所有文件和文件夹都会被删除




利用send2trash模块安全删除文件和文件夹,它会将文件和文件夹发送到计算机的回收站,可以恢复


>>> import send2trash
>>> send2trash.send2trash('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\111.zip')




9.4遍历目录树


os.walk()函数被传入一个字符串值,即一个文件夹的路径,可以在for循环中使用os.walk()函数,
os.walk()函数在每一次循环迭代中,返回三个值


1、当前文件夹名称的字符串
2、当前文件夹中子文件的字符串的列表
3、当前文件夹中文件的字符串的列表




rootdir = r"C:\Users\Nick\Desktop\python\drawing\2"         # 指明被遍历的文件夹
addrList = []
addrListTxt = []
#循环遍历文件夹,并将完整路径存储在列表addrList中
for parent,dirnames,filenames in os.walk(rootdir):  #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字
    for dirname in  dirnames:                       
        print("parent is:" + parent)                 #输出文件夹信息
        print("dirname is:" + dirname) 
    for filename in filenames:
        print("parent is:" + parent)
        print("filename is:" + filename)               #输出文件信息
        print("the full name of the file is:" + os.path.join(parent,filename)) #输出文件路径信息
        
        addrList.append(os.path.join(parent,filename))








9.5用zipfile模块压缩文件




利用zipfile模块中的函数可以创建和打开zip文件


读取zip文件


首先必须创建一个ZipFile对象,要创建一个ZipFile对象,就调用zipfile.ZipFile()函数即可,向他传入一个字符串,表示.zip文件的文件名


ZipFile对象有一个namelist()方法,返回zip文件中包含所有文件和文件夹的字符串列表,这些字符串可以传递给ZipFile对象的getinfo()方法,返回一个关于特定文件的ZipFile对象


ZipFile对象有自己的属性,诸如表示字节数的file_size和compress_size,它们分别表示原来文件大小的压缩后文件的大小;


ZipFile对象表示整个归档文件,而ZipInfo对象则保存该归档文件中每个文件的有用信息


需要加ZipFile对象调用close()方法


>>> import zipfile
>>> exampleZip = zipfile.ZipFile('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\appium-1.6.4-beta.zip')
>>> exampleZip.namelist()
返回压缩文件中的文件列表
>>> exampleGetInfo = exampleZip.getinfo('appium-1.6.4-beta/test/parser-specs.js')
>>> exampleGetInfo.file_size
1935
>>> exampleGetInfo.compress_size
588




从zip文件中解压缩


ZipFile对象的extractall()方法从zip文件中解压缩所有文件和文件夹,放到当前目录中


也可以向extractall()方法中传递一个文件夹名称,它将文件解压缩到那个文件夹,而不是当前工作目录,如果传递的文件夹不存在,会被创建


ZipFile对象的extract()方法从zip文件中解压缩单个文件,传递给extract()的字符串,必须是在namelist()中的一个,可以传递第二个参数,


指定解压缩到指定文件夹,如果传递的文件夹不存在,会被创建,
extract()方法的返回值是被压缩后文件的绝对路径


>>> import zipfile
>>> exampleZipFile = zipfile.ZipFile('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\appium-1.6.4-beta.zip')
>>> exampleZipFile.extractall('C:\\Users\\Nick\\Desktop\\python\\drawing\\2')
>>> exampleZipFile.extractall('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\zip')
>>> exampleZipFile.extract('appium-1.6.4-beta/test/parser-specs.js','C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\zip')
'C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\zip\\appium-1.6.4-beta\\test\\parser-specs.js'




创建和添加到ZIP文件


要创建自己的zip文件,必须以“写模式”打开ZipFile对象,即传入‘w’作为第二个参数


如果ZipFile对象的write()方法传入一个路径,就会压缩该路径所指的文件,将它压缩到ZIP中


write()方法的第一个参数是一个字符串,代表要添加的文件名,第二个参数是“压缩类型”参数,告诉计算机采取什么样的算法来压缩文件,可以总是将这个值设置为zipfile.ZIP_DEFLATED


>>> import zipfile,os
>>> os.chdir('C:\\Users\\Nick\\Desktop\\python\\drawing\\2')
>>> newZip = zipfile.ZipFile('new.zip','w')
>>> newZip.write('3.txt',compress_type = zipfile.ZIP_DEFLATED)
>>> newZip.close()
0 0
原创粉丝点击