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格式:
可参考:https://blog.csdn.net/jianhong1990/article/details/24713395
以下所用到的一些知识点
1.os.walk的利用 2.datetime模块的利用 3.tarfile模块下的 add(),重点在于arcname参数的利用, arcname参数代表需要压缩的文件名
4.os.path.basename(source_dir) 获取文件路径下的最后一个名称
需要压缩的文件目录结构 :
--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.压缩文件夹,一次性打包整个根目录,包括文件夹下的目录
目录结构: --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))
3.压缩文件夹,压缩文件下的所有内容
目录结构: --2018_9_10.tar.gz --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="")
对.tar.gz格式的压缩包解压:
def untar(fname, fanme_dirs): ''' :param fname: 压缩包的完整目录,包括压缩包名 :param fanme_dirs: 压缩包路径 :return: ''' t = tarfile.open(fname) t.extractall(path = fanme_dirs)
正则中在查找的字段前或后添加新内容:
方法一
str = '123.jpg, 456.jpg, 789.jpg' b = re.sub('(?P<data>d+.jpg)',r'sdf\g<data>', str) print(b) 结果:sdf123.jpg, sdf456.jpg, sdf789.jpg
方法二
def double(matched): value = matched.group('value') return str( 'sdd/' + value) s = '567' print(re.sub('(?P<value>d+)', double, s)) #1.在第二参数中,可以添加字符串或函数 2.?P<value>的意思就是命名一个名字为value的组,匹配规则符合后面的/d+ 结果:sdd/567