python--6、常用模块
time与datetime模块
time模块,用于输出时间
在Python中,用这几种方式来表示时间:
- 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
- 格式化的时间字符串(Format String)。自定义时间输出格式。
- 结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
import time
#--------先以当前时间为准,快速认识三种形式的时间
print(time.time()) # 时间戳:1487130156.419527
print(time.strftime("%Y-%m-%d %X")) #格式化的时间字符串:'2017-02-15 11:40:53'
#struct_time:
print(time.localtime()) #本地时区的struct_time
print(time.gmtime()) #UTC时区的struct_time
计算机认识的只有时间戳,为了人们便于识别,于是出现结构化时间和格式化时间
%a Locale’s abbreviated weekday name.
%A Locale’s full weekday name.
%b Locale’s abbreviated month name.
%B Locale’s full month name.
%c Locale’s appropriate date and time representation.
%d Day of the month as a decimal number [01,31].
%H Hour (24-hour clock) as a decimal number [00,23].
%I Hour (12-hour clock) as a decimal number [01,12].
%j Day of the year as a decimal number [001,366].
%m Month as a decimal number [01,12].
%M Minute as a decimal number [00,59].
%p Locale’s equivalent of either AM or PM. (1)
%S Second as a decimal number [00,61]. (2)
%U Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0. (3)
%w Weekday as a decimal number [0(Sunday),6].
%W Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0. (3)
%x Locale’s appropriate date representation.
%X Locale’s appropriate time representation.
%y Year without century as a decimal number [00,99].
%Y Year with century as a decimal number.
%z Time zone offset indicating a positive or negative time difference from UTC/GMT of the form +HHMM or -HHMM, where H represents decimal hour digits and M represents decimal minute digits [-23:59, +23:59].
%Z Time zone name (no characters if no time zone exists).
%% A literal '%' character. 格式化字符串的时间格式
格式化时间的各种方式
#默认以当前时间戳为准:
time.localtime(1473525444.037215)
time.gmtime()
time.mktime(time.localtime())
#默认以当前结构化时间为准:
time.strftime("%Y-%m-%d %X", time.localtime())
time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X')
#默认将time.localtime()作为参数传入。
time.asctime()
#默认time.time()为参数。
time.ctime()
#线程推迟指定的时间运行,单位为秒。
time.sleep(secs)
datetime模块: 对时间进行运算
#时间加减
import datetime # print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
# print(datetime.date.fromtimestamp(time.time()) ) # 时间戳直接转成日期格式 2016-08-19
# print(datetime.datetime.now() )
# print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
# print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
# print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
# print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
#
# c_time = datetime.datetime.now()
# print(c_time.replace(minute=3,hour=2)) #时间替换
random模块
用于生成随机浮点数、整数、字符串和随机抽取元素
方法:
random() 生成一个随机浮点数,范围在0.0~1.0之间
uniform(下限,上限) 在设置的范围内,随机生成一个浮点数(上下限可以是整数,浮点数)
randint(下限,上限) 在设定的范围内,随机生成一个整数(上下限必须为整数)
choice(序列) 从任何序列中选取一个随机的元素返回
shuffle(序列) 随机打乱一个序列中元素的顺序
sample(序列,长度) 从指定的序列中随机截取指定长度的片断,序列本身不做修改
例:
>>> import random
>>> random.random()
0.8447582194835284
>>> random.uniform(1,5)
3.331346403458685
>>> random.randint(1,5)
>>> a=range(1,10)
>>> random.choice(a)
>>> random.shuffle(a)
>>> print a
[7, 2, 5, 9, 1, 3, 4, 8, 6]
>>> random.sample(a,3)
[7, 5, 8]
random实现随机数
import random
def make_code(n):
res=''
for i in range(n):
s1=chr(random.randint(65,90))
s2=str(random.randint(0,9))
res+=random.choice([s1,s2])
return res print(make_code(9))
OS模块
os,包含普遍的操作系统功能,与具体的平台无关。python编程时,处理文件和目录这些操作,就比如说:显示当前目录下所有文件/删除某个文件/获取文件大小……
os模块不受平台限制,也就是说:当我们要在linux中显示当前命令时就要用到pwd命令,而Windows中cmd命令行下就要用到这个,例如:这时候我们使用python中os模块的os.path.abspath(name)功能,甭管是linux或者Windows都可以获取当前的绝对路径。
常见函数列表
os.name
:指示你正在使用的工作平台。比如对于Windows,返回是'nt',而对于Linux/Unix用户,返回是'posix'。os.sep
:取代操作系统特定的路径分隔符os.getcwd
:得到当前工作目录,即当前python脚本工作的目录路径。os.getenv()
和os.putenv
:分别用来读取和设置环境变量os.listdir()
:返回指定目录下的所有文件和目录名os.remove(file)
:删除一个文件os.stat(file)
:获得文件属性os.chmod(file)
:修改文件权限和时间戳os.mkdir(name) :
创建目录os.rmdir(name)
:删除目录os.removedirs(r“c:\python”)
:删除多个目录os.system()
:运行shell命令os.exit()
:终止当前进程os.linesep
:给出当前平台的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'os.path.split()
:返回一个路径的目录名和文件名os.path.isfile()
和os.path.isdir()
分别检验给出的路径是一个目录还是文件os.path.existe()
:检验给出的路径是否真的存在os.listdir(dirname)
:列出dirname下的目录和文件os.getcwd()
:获得当前工作目录os.curdir
:返回当前目录('.')os.chdir(dirname)
:改变工作目录到dirnameos.path.isdir(name)
:判断name是不是目录,不是目录就返回falseos.path.isfile(name)
:判断name这个文件是否存在,不存在返回falseos.path.exists(name)
:判断是否存在文件或目录nameos.path.getsize(name)
:或得文件大小,如果name是目录返回0Los.path.abspath(name)
:获得绝对路径os.path.isabs()
:判断是否为绝对路径os.path.normpath(path)
:规范path字符串形式os.path.split(name)
:分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)os.path.splitext()
:分离文件名和扩展名os.path.join(path,name)
:连接目录与文件名或目录os.path.basename(path)
:返回文件名os.path.dirname(path)
:返回文件路径
例:
文件操作
os.mknod("abc.test") #
创建空文件
目录操作
os.mkdir("file")
创建一个名为file的目录
复制文件:
shutil.copyfile("oldfile","newfile")
oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile")
oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
shutil.copytree("olddir","newdir")
复制文件夹.olddir和newdir都只能是目录,且newdir必须不存在
os.rename("oldname","newname")
重命名文件(目录).文件或目录都是使用这条命令
shutil.move("oldpos","newpos")
移动文件(目录)
os.rmdir("dir")
只能删除空目录
shutil.rmtree("dir")
空目录、有内容的目录都可以删
os.chdir("path")
转换目录,换路径
OS路径处理的两种方式:
os.path.normpath(os.path.join(
os.path.abspath(__file__),..,..))
os.path.dirname()嵌套os.path.abspath(__file__)
sys模块
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称 例子:
#=========实现打印进度条函数==========
import sys
import time def progress(percent,width=50):
if percent >= 1:
percent=1
show_str=('[%%-%ds]' %width) %(int(width*percent)*'#')
print('\r%s %d%%' %(show_str,int(100*percent)),file=sys.stdout,flush=True,end='')
shutil模块
高级的 文件、文件夹、压缩包 处理模块
shutil.copyfileobj(fsrc, fdst[, length])
将文件内容拷贝到另一个文件中。
shutil.copyfile(src, dst)
拷贝文件
shutil.copymode(src, dst)
仅拷贝权限。内容、组、用户均不变
shutil.copystat(src, dst)
仅拷贝状态的信息,包括:mode bits, atime, mtime, flags
shutil.copy(src, dst)
拷贝文件和权限
shutil.copy2(src, dst)
拷贝文件和状态信息
shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件夹
import shutil
shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除
shutil.rmtree(path[, ignore_errors[, onerror]])
递归的去删除文件
shutil.move(src, dst)
递归的去移动文件,它类似mv命令,其实就是重命名。
shutil.make_archive(base_name, format,...)
创建压缩包并返回文件路径,例如:zip、tar
创建压缩包并返回文件路径,例如:zip、tar
参数列表:
- base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如 data_bak =>保存至当前路径
如:/tmp/data_bak =>保存至/tmp/ - format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
- root_dir: 要压缩的文件夹路径(默认当前目录)
- owner: 用户,默认当前用户
- group: 组,默认当前组
- logger: 用于记录日志,通常是logging.Logger对象
shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的
json&pickle模块
用于对数据进行序列化
把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling。
作用:
1:持久保存状态
2:跨平台数据交互
json
JSON表示的对象就是标准的JavaScript语言的对象,只支持双引号
JSON和Python内置的数据类型对应如下:
import json dic={'name':'alvin','age':23,'sex':'male'}
print(type(dic))#<class 'dict'> j=json.dumps(dic)
print(type(j))#<class 'str'> f=open('序列化对象','w')
f.write(j) #-------------------等价于json.dump(dic,f)
f.close()
#-----------------------------反序列化<br>
import json
f=open('序列化对象')
data=json.loads(f.read())# 等价于data=json.load(f)
注:无论数据是怎样创建的,只要满足json格式,就可以json.loads出来
pickle
只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关系。
与json的 dumps和loads使用类似,需要注意:
dumps时会转成bytes格式。
loads时需要注意文件要以bytes格式读取。
configparser模块
配置文件如下:
# 注释1
; 注释2 [section1]
k1 = v1
k2:v2
user=jinyudong
age=18
is_admin=true
salary=1234
读取
import configparser config=configparser.ConfigParser()
config.read('a.cfg') #查看所有的标题
res=config.sections()
#查看标题section1下所有key=value的key
options=config.options('section1')
#查看标题section1下所有key=value的(key,value)格式
item_list=config.items('section1')
#查看标题section1下user的值=>字符串格式
val=config.get('section1','user')
#查看标题section1下age的值=>整数格式
val1=config.getint('section1','age')
#查看标题section1下is_admin的值=>布尔值格式
val2=config.getboolean('section1','is_admin') #查看标题section1下salary的值=>浮点型格式
val3=config.getfloat('section1','salary')
改写
import configparser config=configparser.ConfigParser()
config.read('a.cfg',encoding='utf-8') #删除整个标题section2
config.remove_section('section2') #删除标题section1下的某个k1
config.remove_option('section1','k1') #判断是否存在某个标题
print(config.has_section('section1')) #判断标题section1下是否有user
print(config.has_option('section1','')) #添加一个标题
config.add_section('egon') #在标题egon下添加name=egon,age=18的配置
config.set('egon','name','egon') #,必须是字符串 #最后将修改的内容写入文件,完成最终的修改
config.write(open('a.cfg','w'))
hashlib模块
hash:一种算法 ,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
三个特点:
1.内容相同则hash运算结果相同,内容稍微改变则hash值则变
2.不可逆推
3.相同算法:无论校验多长的数据,得到的哈希值长度固定。
import hashlib
m=hashlib.md5()# m=hashlib.sha256() m.update('hello'.encode('utf8'))
print(m.hexdigest()) #5d41402abc4b2a76b9719d911017c592 m.update('alvin'.encode('utf8')) print(m.hexdigest()) #92a7e713c30abbb0319fa07da2a5c4af
m2=hashlib.md5()
m2.update('helloalvin'.encode('utf8'))
print(m2.hexdigest()) #92a7e713c30abbb0319fa07da2a5c4af '''注意:把一段很长的数据update多次,与一次update这段长数据,得到的结果一样但是update多次为校验大文件提供了可能。''' 附加:
hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密:
import hmac
h = hmac.new('alvin'.encode('utf8'))
h.update('hello'.encode('utf8'))
print (h.hexdigest()) #320df9832eab4c038b6c1d7ed73a5940
#要想保证hmac最终结果一致,必须保证:
#1:hmac.new括号内指定的初始key一样
#2:无论update多少次,校验的内容累加到一起是一样的内容
python--6、常用模块的更多相关文章
- python的常用模块之collections模块
python的常用模块之collections模块 python全栈开发,模块,collections 认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文 ...
- python之常用模块
python 常用模块 之 (subprocess模块.logging模块.re模块) python 常用模块 之 (序列化模块.XML模块.configparse模块.hashlib模块) pyth ...
- python之常用模块二(hashlib logging configparser)
摘要:hashlib ***** logging ***** configparser * 一.hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 摘要算法 ...
- Python学习——python的常用模块
模块:用一堆代码实现了某个功能的代码集合,模块是不带 .py 扩展的另外一个 Python 文件的文件名. 一.time & datetime模块 import time import dat ...
- python 之常用模块
一 认识模块 二 常用模块 (1)re模块 (2)collections模块 一 认识模块 (1)什么是模块 (2)模块的导入和使用 (1)模块是:一个模块就是一个包含 ...
- Python之常用模块--collections模块
认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...
- Python自动化开发之python的常用模块
python常用模块 模块的种类:模块分为三种,分别是自定义模块:内置标准模块(即标准库):开源模块(第三方). 以下主要研究标准模块即标准库:标准库直接导入即可,不需要安装. 时间模块:time , ...
- python基础----常用模块
一 time模块(时间模块)★★★★ 时间表现形式 在Python中,通常有这三种方式来表示时 ...
- python(五)常用模块学习
版权声明:本文为原创文章,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明. https://blog.csdn.net/fgf00/article/details/52357 ...
- python学习——常用模块
在学习常用模块时我们应该知道模块和包是什么,关于模块和包会单独写一篇随笔,下面先来了解有关在python中的几个常用模块. 一.什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文 ...
随机推荐
- Keil MDK下如何设置非零初始化变量(复位后变量值不丢失)
一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备.而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始 ...
- 7.1.2 Python 内置异常类层次结构
这一节就是拿来主义了,连接:https://blog.csdn.net/Karen_Yu_/article/details/78629918 异常名称 描述 BaseException 所有异常的基类 ...
- “从客户端(content="XXXX")中检测到有潜在危险的 Request.Form值” 解决方案
解决方案一: 在.aspx文件头中加: <%@Page validateRequest="false" %> 解决方案二: 修改web.config文件: <co ...
- Codeforces Problem 778B Bitwise Formula
题目链接:http://codeforces.com/contest/779/problem/E 题意:有n个变量都可以用m位二进制数表示,这n个数的value将以两种格式中的一种给出 1.变量名, ...
- ansible common modules
##Some common modules[cloud modules] [clustering modules] [command modules]command - executes a comm ...
- 清北学堂模拟赛d7t5 做实验
题目描述有一天,你实验室的老板给你布置的这样一个实验.首先他拿出了两个长度为 n 的数列 a 和 b,其中每个 ai 以二进制表示一个集合.例如数字 5 = (101)2 表示集合 f1; 3g.第 ...
- windows下swoole安装教程
1)下载安装cygwin(根据操作系统选择32位或者64位): https://cygwin.com/install.html 选择在windows中虚拟环境的root目录 选择下载安装的网络节点,如 ...
- IIS发布后出现“如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题”错误
VS2010运行程序没有任何问题,但是发布到IIS以后,连接数据库时报错:“尝试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Oracle ...
- Nginx配置httpsserver
配置HTTPS主机.必须在server配置块中打开SSL协议,还须要指定服务器端证书和密钥文件的位置: server { listen 443; #要加密的域名 server_name www.te ...
- poj 1068 Parencodings(模拟)
转载请注明出处:viewmode=contents">http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://poj ...