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) 结果:sdf\.jpg, sdf\.jpg, sdf\.jpg

方法二

def double(matched):
value = matched.group('value')
return str( 'sdd/' + value)
s = ''
print(re.sub('(?P<value>\d+)', double, s)) #1.在第二参数中,可以添加字符串或函数 2.?P<value>的意思就是命名一个名字为value的组,匹配规则符合后面的/d+ 结果:sdd/567

  

Python平时代码的一些知识的更多相关文章

  1. 盘点 Python 中的那些冷知识(二)

    上一篇文章分享了 Python中的那些冷知识,地址在这里 盘点 Python 中的那些冷知识(一) 今天将接着分享!! 06. 默认参数最好不为可变对象 函数的参数分三种 可变参数 默认参数 关键字参 ...

  2. python 示例代码1

    第一章 python基础一 ​在此不再赘述为什么学习python这门编程,网上搜索一箩筐.我在此仅说一句python的好,用了你就会爱上它. 本python示例代码1000+带你由浅入深的了解pyth ...

  3. Java 代码的基本知识(摘)

    (摘自:Java经典入门教程) http://wenku.baidu.com/link?url=IoWI58cD5vzeHN-NL4pN7Gren-RfzydrhjDlETAByC9L-9ANinyL ...

  4. Python一行代码

    1:Python一行代码画出爱心 print]+(y*-)**-(x**(y*<= ,)]),-,-)]) 2:终端路径切换到某文件夹下,键入: python -m SimpleHTTPServ ...

  5. python爬虫代码

    原创python爬虫代码 主要用到urllib2.BeautifulSoup模块 #encoding=utf-8 import re import requests import urllib2 im ...

  6. Python小代码_2_格式化输出

    Python小代码_2_格式化输出 name = input("name:") age = input("age:") job = input("jo ...

  7. Python小代码_1_九九乘法表

    Python小代码_1_九九乘法表 max_num = 9 row = 1 while row <= max_num: col = 1 while col <= row: print(st ...

  8. Python IDLE 代码高亮主题

    Python IDLE 代码高亮主题 使用方法: 打开C盘我的 C:\Documents and Settings\你的用户名.idlerc文件夹 里面会有一个 config-highlight.cf ...

  9. Python学习第二节——基础知识

    # !/usr/bin/edv python    脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它.# -*- coding:UTF-8 -*-    标明编码注释 ...

随机推荐

  1. leetcode — jump-game-ii

    /** * // Source : https://oj.leetcode.com/problems/jump-game-ii/ * * Created by lverpeng on 2017/7/1 ...

  2. javaScript之变量与数据类型

    http://www.cnblogs.com/yuanchenqi/articles/5980312.html 在了解变量之前,我们首先学习JavaScript的引入方式 JavaScript的引入方 ...

  3. 消息中间件RabbitMQ(一)

    1.消息中间件 消息队列中间件是指利用高效可靠地消息传递机制传递消息.有两种传递模式:点对点模式.发布/订阅模式.流行的消息中间件有RabblitMQ.Kafka.RockerMQ.它们都提供了基于存 ...

  4. MySQL高可用之组复制(4):详细分析组复制理论

    MySQL组复制系列文章: MySQL组复制大纲 MySQL组复制(1):组复制技术简介 MySQL组复制(2):配置单主模型的组复制 MySQL组复制(3):配置多主模型的组复制 MySQL组复制( ...

  5. eclipse如何将项目上传到码云

    把Eclipse项目上传到码云的步骤: 一.将代码提交到本地 1.登录码云:新建项目 2.输入项目名: 3.空项目创建成功如下图: 4.右键点击Eclipse的项目,选择“Team”——>“Sh ...

  6. [转]git图解(3):分支操作

    本文转自:https://www.jianshu.com/p/342a9f8db004   title_img.png git 的分支是它最明显的特性, 大部分人听别人推荐使用git都会听到“git分 ...

  7. 建立多页面vue.js项目

    介绍 根据需求,我们希望建立一个多页面的vue.js项目,如何改造单页面vue.js项目为多页面项目?跟着我的步伐看下去吧. 1.创建单页面vue.js项目 简单的记录一下创建步骤: --安装cnpm ...

  8. Tomcat 8005/8009/8080/8443端口的作用

    --关闭tomcat进程所用.当执行shutdown.sh关闭tomcat时就是连接8005端口执行“SHUTDOWN”命令--由此,我们直接telnet8005端口执行“SHUTDOWN”(要大写, ...

  9. 再谈 C# 对象二进制序列化,序列化并进行 AES 加密

    对象的二进制序列化非常有用,也非常方便. 我们可以把对象序列化为字节数组,也可以把对象序列化到文件,还可以把对象序列化到文件并进行加密. 先引用这些命名空间: using System.IO;usin ...

  10. 禅道导入bugfree 3.0的数据

    禅道项目导入bugfree功能只支持到2.0, 官方不提供3.0的导入,只好自己写了一个.因为bugfree 3.0换人开发了,表结构和禅道差别很大,所以,这个工具不是完全转换,一些History表内 ...