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()
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()