Python平时代码的一些知识

 

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

  

原文地址:https://www.cnblogs.com/tang-s/p/9620248.html