压缩后的目录结构:
--2018_9_10.tar.gz
--filename
--file1
--test1
--test2
--test3
def make_targz(save_dir, source_dir):
‘‘‘
:param save_dir: 保存压缩包的目录
:param source_dir: 需要压缩文件夹的目录
‘‘‘
fname = datetime.datetime.now().strftime(‘%Y_%m_%d‘)
fname = save_dir + "/" + fname
with tarfile.open(fname + ".tar.gz", "w:gz") as tar:
tar.add(source_dir, arcname=os.path.basename(source_dir))
os.walk的作用:
def file_name(file_dir): for root, dirs, files in os.walk(file_dir): print(root) #当前目录路径 print(dirs) #当前路径下所有子目录 print(files) #当前路径下所有非目录子文件
对日期操作:
获取当前日期: date_name = datetime.datetime.now().strftime(‘%Y_%m_%d‘) 日期的相加减: date1 = ‘2018_9_10‘ date2 = ‘2018_10_10‘ d1 = datetime.datetime.strptime(date1, ‘%Y_%m_%d‘) d2 = datetime.datetime.strptime(date2, ‘%Y_%m_%d‘) delta = d2-d1 print delta.days
结果:30
对文件夹的压缩tar.gz格式:
以下所用到的一些知识点
1.os.walk的利用
2.datetime模块的利用
3.tarfile模块下的 add(),重点在于arcname参数的利用,
arcname参数代表需要压缩的文件名
需要压缩的文件目录结构 :
--filename
--file1
--test1
--test2
--test3
1.压缩文件夹,只能压缩文件夹下的文件
压缩后的目录结构:
--2018_9_10.tar.gz
--test2
--test3
def tar_file(save_dir, uppack_dir): ‘‘‘ :param save_dir: 保存压缩文件的路径 :param uppack_dir: 需要压缩文件的路径 :param fname:获取当前时间命名压缩文件 :return: ‘‘‘ fname = datetime.datetime.now().strftime(‘%Y_%m_%d‘) fname = save_dir + "/" + fname tar = tarfile.open(fname + ".tar.gz", "w:gz") for root, dir, files in os.walk(uppack_dir): for file in files: fullpath = os.path.join(root, file)
tar.add(fullpath, arcname=file)
2.压缩文件夹,一次性打包整个根目录,包括文件夹下的目录
3.压缩文件夹,压缩文件下的所有内容
def make_targz(save_dir, source_dir):
‘‘‘ :param save_dir: 保存压缩包的目录 :param source_dir: 需要压缩文件夹的目录 ‘‘‘ fname = datetime.datetime.now().strftime(‘%Y_%m_%d‘) fname = save_dir + "/" + fname with tarfile.open(fname + ".tar.gz", "w:gz") as tar: tar.add(source_dir, arcname="")
原文:https://www.cnblogs.com/tang-s/p/9620248.html