在学习或工作的过程中,当完成某一部分的工作之后我们可以对其内容进行压缩。通常情况下,这些工作在一个包含子文件的文件中。下面我们将介绍使用Python中的os模块对当前目录及其子目录中的文件进行压缩。代码如下:
import os
path = os.getcwd()
for folderName, subfolders, filenames in os.walk( path ):
workPath = os.path.join( path, folderName)
os.chdir( workPath )
print( 'folder : {}'.format( workPath ) )
# compression
with zipfile.ZipFile( 'results.zip', 'w', compression=zipfile.ZIP_DEFLATED, allowZip64=True) as zip:
for filename in os.scandir( '.' ):
if filename.endswith('lmp') or filename.endswith('.sh'):
zip.write( filename )
os.remove( filename )
# uncompression
with zipfile.ZipFile('results.zip', 'r') as zip :
zip.extractall(path='.')
os.remove('results.zip')
os.getcwd()得到当前的路径。os.walk返回给我们三个值:以字符串的形式返回当前文件夹的名字(folderName);
以字符串的形式返回当前文件夹下的子文件夹的名字(subfolders);
以字符串的形式返回当前文件夹下的文件的名字(filenames)。
os.chdir()与shell中的cd命令的功能一致,进入到指定文件夹。接下来,使用zipfile方法对文件进行压缩。首先,指定得到的压缩文件名(results.zip),指定写入模式(w),压缩方式(zipfile.ZIP_DEFLATED),当得到的压缩文件大于4GB时使用ZIP64扩展名。
for filename in os.scandir( '.' ):
列出当前目录下的文件及文件夹。这里我们需要注意,我们之前有一个os.chdir()的命令,也就是说我们的当前目录是os.walk()中的fileName。
我们也可以根据文件名的特点对文件进行选择然后压缩,压缩之后进行删除。code如下:
if filename.endswith('lmp') or filename.endswith('.sh'):
zip.write( filename )
os.remove( filename )
完成压缩部分之后,如果我们需要回看文件那么我们需要对压缩文件进行解压。code如下:
with zipfile.ZipFile('results.zip', 'r') as zip :
zip.extractall(path='.')
os.remove('results.zip')
压缩文件名为results.zip,压缩模式为读取(r)。讲压缩文件中的内容解压到当前文件zip.extractall(path='.'),解压之后对压缩文件进行删除os.remove('results.zip')。
小结:
本篇短文介绍了用os模块对文件进行压缩和解压处理。希望介绍的内容对大家有帮助。对于别的具体的方法,请参考Python的os模块。