time 模块:
在 python 中,通常有以下几种方式来表示时间:
1、时间戳,如 time.time
2、格式化的时间字符串,如'17/01/2017 10:17:00'
3、元组(struct_time),如 gmtime、localtime 等等
time.time():把从 1970 年开始到现在的所有时间转换成秒数,即时间戳
time.gmtime():将时间戳(秒数)转换成 UTC 时区的元组形式
time.localtime():将时间戳转换成当地时区的元组形式
这种元组形式的时间可以通过其内部的方法取得需要的时间元素。例:
x = time.localtime()
x.tm_year 可以取得当前是哪一年
x.tm_mon 可以取得当前是哪一月
x.tm_mday 可以取得当前是哪一天
time.sleep(s):睡眠 s 秒
time.mktime(t):将元组 (tuple) 形式的时间转换成时间戳
time.strftime(format [, tuple]):
将元组形式的时间转换成格式化的时间字符串 (用数字方式显示),若不指定 tuple 则转换当前的 localtime
time.strptime(string, format): 将格式化的时间字符串转换成元组形式的时间
time.asctime([tuple]):
将元组形式的时间转换成格式化的时间字符串 (用英文方式显示),若不指定 tuple 则转换当前的 localtime
time.ctime([seconds]):
将时间戳转换成格式化的时间字符串 (用英文方式显示),若不指定时间戳则转换当前的时间戳
datetime 模块:
datetime.datetime.now():取得当前的日期与时间
datetime.datetime.now() + datetime.datetime.delta(3):取得三天后的当前时间
datetime.datetime.now() + datetime.datetime.delta(-3):取得三天前的当前时间
datetime.datetime.now() + datetime.datetime.delta(hours=3):取得三小时后的当前时间
datetime.datetime.now() + datetime.datetime.delta(hours=-3):取得三小时前的当前时间
datetime.datetime.now().replace(minute=10,hour=10):时间替换
random 模块: 随机数
random.random():取得 0-1 之间的浮点随机数
random.uniform(1,10):取得 1-10 之间的浮点随机数,1 和 10 可以任意指定
random.randint(1,3):取得 1-3 之间的任意随机数,包括 1 和 3,这里的 1 和 3 可以任意指定
random.randrange(1,3):取得 1-3 之间的任意随机数,不包括 3,这里的 1 和 3 可以任意指定
random.choice('equence):从序列 sequence 中随机取一个元素
random.sample(sequence,count):每次从序列 sequence 中随机取 count 个元素
random.shuffle(sequence):洗牌,将一个序列的顺序打乱
os 模块:提供对操作系统进行调用的接口
os.getcwd():获取当前工作目录
os.chdir(path):切换目录
os.curdir:返回当前目录
os.pardir:返回当前目录的父目录
os.makedirs(name, mode=511, exist_ok=False):递归创建目录
例:os.makedirs(r'/a/b/c/d/e')
os.removedirs(name):若目录为空则删除,并递归到上一级目录,若还是为空则再删除,依此类推
os.mkdir(path, mode=511, *, dir_fd=None): 创建单级目录,若父目录不存在则抛出异常
os.rmdir(path, *, dir_fd=None):删除单级空目录,若目录不为空则抛出异常
os.listdir(path=None):列出某路径下的所有文件,包括文件和目录
os.remove():删除一个文件
os.rename('oldname','newname'):重命名文件 / 目录
os.stat('path/to/filename'):获取文件 / 目录信息
os.sep:输出操作系统特定的路径分隔符,win 下为'\\',linux 下为'/'
os.linesep:输出当前平台使用的行终止符,win 下为'\r\n',linux 下为'\n'
os.pathsep:输出用于分割文件路径的字符串,存放多个路径的时候区分不同路径时用的分隔符
os.name:输出字符串指示当前使用平台。win-->'nt',linux-->'posix'
os.system('bash command'):运行 shell 命令,直接显示结果
os.environ:获取系统环境变量
os.path.abspath(path):返回 path 规范化的绝对路径
os.path.split(path):返回将 path 分割成以目录和文件名作为元素的 2 元素元组
os.path.dirname(path):返回 path 的目录。其实就是 os.path.split(path) 的第一个元素
os.path.basename(path):返回 path 最后的文件名。如果 path 以 / 或 \ 结尾,那么就会返回空值。
其实就是 os.path.split(path) 的第二个元素
os.path.exists(path):判断 path 是否存在,存在返回 True,否则返回 False
os.path.isabs(path):判断 path 是不是一个绝对路径,是则返回 True,否则返回 False
os.path.isfile(path):判断 path 是不是一个文件,是则返回 True, 否则返回 False
os.path.isdir(path):判断 path 是不是一个目录,是则返回 True,否则返回 False
os.path.join(path1 [, path2 [, ...]]):
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path):返回 path 所指向的文件或目录的最后存取时间
os.path.getmtime(path):返回 path 所指向的文件或目录的最后修改时间
sys 模块:
sys.argv:命令行参数 list,第一个元素是程序本身路径
sys.exit(n):退出程序,正常退出时 exit(0)
sys.version:获取 python 解释程序的版本信息
sys.maxint:最大的 int 值
sys.path:返回模块的搜索路径,初始化时使用 PYTHONPATH 环境变量的值
sys.platform:返回操作系统平台名称
sys.stdout.write('please:')
va1 = sys.stdin.readline()[:-1]
shutil:专门用来 copy 文件,可以压缩包
shutil.copyfileobj(fsrc,fdst [, length]):
将 ffsrc 的内容拷贝至 fdst 中,可以通过 length 设置拷贝多少内容
shutil.copyfile(src,dst):拷贝 src 至 dst
shutil.copymode(src,dst):仅拷贝权限。新文件的内容、组、用户均不变 (谁创建的文件就是谁的)
shutil.copystat(src,dst):拷贝状态的信息,包括 mode bits,atime,mtime,flags
shutil.copy(src,dst):拷贝文件和权限
shutil.copy2(src,dst):拷贝文件和状态信息
shutil.copytree(src,dst,symlink=False,ignore=None):递归的去拷贝文件
shutil.rmtree(path [, ignore_errors [, onerror]]):递归的去删除文件
shutil.move(src,dst):递归的去移动文件
shutil.make_archive(base_name,format,...):创建压缩包并返回文件路径,例如:zip、tar
base_name:
压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径。
如:www => 保存至当前路径
如:/Users/sean/www => 保存至 / Users/sean/www
format:压缩包种类。'zip'、'tar'、'bztar'、'gztar'
root_dir:要压缩的目录路径(默认当前目录)
owner:用户。默认当前用户
group:组。默认当前组
logger:用于记录日志。通常是 logging.Logger 对象
shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的。
zipfile 模块:
压缩:
z = zipfile.ZipFile('test.zip','w')
z.write('a.log')
z.write('data.data')
z.close()
解压:
z = zipfile.ZipFile('test.zip','r')
z.extractall()
z.close()
tarfile 模块:
压缩:
tar = tarfile.open('your.tar','w')
tar.add('/Users/sean/www.zip',arcname='www.zip')
tar.add('/Users/sean/cmdb.zip',arcname='cmdb.zip')
tar.close()
解压:
tar = tarfile.open('your.tar','r')
tar.extractall()
tar.close()
json & pickle:用于序列化的两个模块
json,用于字符串和 python 数据类型间进行转换
把 python 内存中的数据类型转换成字符串存储在硬盘的文件上
解决了不同语言、不同平台之间的数据交换问题。
pickle,用于 python 特有的类型和 python 的数据类型间进行转换
把 python 内存中的任意数据类型转换成字符串存储在硬盘的文件上
两者均提供了四个功能:dumps、dump、loads、load
shelve:一个简单的字典类型的 (key,value),将内存数据通过文件持久化存储的模块
可以持久化存储任何 pickle 可支持的 python 数据类型
写入:
- d = shelve.open('shelve_test')#打开一个文件
- class Test(object):
- def __init__(self,n):
- self.n = n
- t = Test(123)
- t2 = Test(1234567)
- name = ['tom','jerry','test']
- d['test'] = name #持久化列表
- d['t1'] = t #持久化类
- d['t2'] = t2
- d.close()
读取:
- d.get('test')
- d.get('t1')
- d.get('t2')
xml:用来在 python 中处理 xml
- import xml.etree.ElementTree as ET
- tree = ET.parse('xmltest.xml')#要处理的文件名
- root = tree.getroot()
- print(root.tag)#打印根标签名
- #遍历xml文档
- for child in root:
- print(child.tag,child.attrib)
- for i in child:
- print(i.tag,i.text)
- #只遍历year节点
- for node in root.iter('year'):
- print(node.tag,node.text)
- #修改
- for node in root.iter('year'):
- new_year = int(node.text) + 1
- node.text = str(new_year)
- node.set("updated_by","sean")
- tree.write('xmltest.xml')
- #删除node
- for country in root.findall('country'):
- rank = int(country.find('rank').text)
- if rank > 50:
- root.remove(country)
- tree.write('output.xml')
configparser:生成和修改常见配置文档
生成:
- import configparser
- config = configparser.ConfigParser()
- config['DEFAULT'] = {'ServerAliveInterval':'45',
- 'Compression':'yes',
- 'CompressionLevel':'9'}
- config['bitbucket.org'] = {}
- config['bitbucket.org']['User'] = 'hg'
- config['topsecret.server.com'] = {}
- topsecret = config['topsecret.server.com']
- topsecret['Host Port'] = '50022'
- topsecret['ForwardX11'] = 'no'
- config['DEFAULT']['ForwardX11'] = 'yes'
- with open('example.ini','w') as configfile:
- config.write(configfile)
读取:
- conf = configparser.ConfigParser()
- conf.read('example.ini')
- print(conf.defaults())
- print(conf['bitbucket.org']['user'])
hashlib:用于加密相关的操作
3.x 系列代替了 2.x 系列中的 md5 模块和 sha 模块。主要提供 SHA1、SHA224、SHA256、SHA284、SHA512 和 MD5 算法
- import hashlib
- m = hashlib.md5()
- m.update(b'Hello')
- m.update(b"It's me")
- print(m.digest())#二进制格式hash
- print(m.hexdigest())#十六进制格式hash
注意:前面执行了两次 update,然后才打印的结果,此时的结果是两次 update 的对象加在一起生成的 hash
来源: