待更新
1、Time
三种表示时间的方式:时间戳、、
1、时间戳
print(time.time()) #1498548307.2518802
2、时间字符串
aa=time.strftime("%Y-%m-%d %X") #
print(aa)
3、结构化时间
time.localtime() #时间戳可以做参数。
1、提取结构化时间的元素。
print(time.localtime()) #时间对象,对象都可以通过“对象.方法”的方式进行调用
s=time.localtime()
print(s.tm_year) #查看年份
5、结构化时间==》时间戳。
print(time.mktime(time.localtime()))
6、字符串时间==》结构化时间
将1990:03:12转换成结构化时间:
print(time.strptime('1990:03:12','%Y:%m:%d'))
作业:将2013-07-13加3天
import time
tim_str='2013-07-13'
aa=time.strptime(tim_str,'%Y-%m-%d')
bb=time.mktime(aa)
cc=bb+(3600*24*3)
dd=time.localtime(cc)
ee=time.strftime('%Y-%m-%d',dd)
print(ee)
4、世界标准时间。
print(time.gmtime())
2、random
random.random() # 0到1之间的小数 random.uniform(1,3) #大于1小于3的小数 random.randint(1,5) # 大于等于1且小于等于5之间的整数 random.randrange(1,3) # 大于等于1且小于3之间的整数 random.choice([1,'23',[4,5]]) #取其一 #1或者23或者[4,5] random.sample([1,'23',[4,5]],2) #取多项 #列表元素任意2个组合 item=[1,3,5,7,9] random.shuffle(item) # 打乱次序 print(item)
验证码
import random def valdate_code(): ret='' for i in range(5): #循环取5次值 num=random.randint(0,9) #取数字 alfa=chr(random.randint(97,122)) #取小写字母(chr(97)) alfa2=chr(random.randint(65,90)) #取大写字母 s=random.choice([str(num),alfa,alfa2]) #从(数字,小写,大写字母)中取任意类型数据 ret=ret+s return ret print(valdate_code())
hashlib
摘要算法,避免数据被篡改。摘要函数是单向函数,反推困难。安全性高。
常见的摘要算法:MD5、SHA1,调用方法一样
如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的:
import hashlib md5_obj.update(b"hello") md5_obj.update(b"world") #分块多次调用 print(md5_obj.hexdigest()) #返回摘要 |
3、os
print(os.getcwd()) #查看当前目录(pwd os.chdir(r'D:') #切换目录:cd f=open('text.txt','w') os.mkdir(r'd:dddd es') #创建目录 os.makedirs(r'd:ddddac') #创建多层目录 os.rmdir(r'd:ddddac') #删除目录 os.removedirs(r'd:ddddac') #目录为空则删除,并递归到上一级目录,若也为空则删除。依此类推。
os.walk
这个函数会遍历指定目录下的所有目录和文件。输出的格式是:目录,子目录,子文件
os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径。 os.path.dirname(path) #返回文件路径 os.path.exists(path) #路径存在则返回True,路径损坏返回False os.path.lexists #路径存在则返回True,路径损坏也返回True os.path.expanduser(path) #把path中包含的"~"和"~user"转换成用户目录 os.path.expandvars(path) #根据环境变量的值替换path中包含的”$name”和”${name}” os.path.getatime(path) #返回最后一次进入此path的时间。 os.path.getmtime(path) #返回在此path下最后一次修改的时间。 os.path.getctime(path) #返回path的大小 os.path.getsize(path) #返回文件大小,如果文件不存在就返回错误 os.path.isabs(path) #判断是否为绝对路径 os.path.isfile(path) #判断路径是否为文件 os.path.isdir(path) #判断路径是否为目录 os.path.islink(path) #判断路径是否为链接 os.path.ismount(path) #判断路径是否为挂载点() os.path.join(path1[, path2[, ...]]) #把目录和文件名合成一个路径 os.path.normcase(path) #转换path的大小写和斜杠 os.path.normpath(path) #规范path字符串形式 os.path.realpath(path) #返回path的真实路径 os.path.relpath(path[, start]) #从start开始计算相对路径 os.path.samefile(path1, path2) #判断目录或文件是否相同 os.path.sameopenfile(fp1, fp2) #判断fp1和fp2是否指向同一文件 os.path.samestat(stat1, stat2) #判断stat tuple stat1和stat2是否指向同一个文件 os.path.split(path) #把路径分割成dirname和basename,返回一个元组 os.path.splitdrive(path) #一般用在windows下,返回驱动器名和路径组成的元组 os.path.splitext(path) #分割路径,返回路径名和文件扩展名的元组 os.path.splitunc(path) #把路径分割为加载点与文件 os.path.walk(path, visit, arg) #遍历path,进入每个目录都调用visit函数,visit函数必须有 3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数 os.path.supports_unicode_filenames #设置是否支持unicode路径名
json模块
序列化:
import json
dic = {'name':'wu','age':32}
f=open('dump.txt','w')
data=json.dump(dic,f) #直接给一个序列化对象和句柄就可以了。
反序列化
f=open(‘json_data.txt’,’r’)
dic=json.load(f)
subprocess
import subprocess #调用系统命令
s=subprocess.Popen('dir',shell=True) #调用subprocess.Popen时开了一个进程,所以'ending'先打印.
s.wait() #等s这个子进程执行完了再往下执行。
print('ending')
pickle模块
pickle仅仅用于python的数据类型,优点是能支持python的所有数据类型。
缺点:只能在两个python程序之间进行交换。
Pickle序列化后的数据是二进制
序列化:
import pickle
dic={'name':'alvin','age':23,'sex':'male'}
f=open('pickle.txt','wb')
pickle.dump(dic,f)
反序列化
import pickle
f=open('pickle.txt','rb')
data=pickle.load(f)
print(type(data),data)
shelve模块
configparser模块
import configparser
cfp = configparser.ConfigParser() #创建一个对象(一个空字典)
cfp['DEFAULT']={'ServerAliveInterval':45,'Compression':'YES','CompressionLevel':9,'ForwardX11':'YES'} # 创建’DEFAULT’字段的字典。
cfp['bitbucket.org']={'USER':'hg'}
cfp['topsecret.server.com']={'Port':5000123,'ForwardX11':'no'}
with open('cfp.ini','w') as f:
#写到文件里
cfp.write(f)
import configparser confi = configparser.ConfigParser() #实例化 confi.add_section('yuan') #添加字段 confi.set('yuan','int','ls') #在字段中添加int = ls confi.set('yuan', 'baz', 'fun') confi.set('yuan', 'bar', 'Python') confi.write(open('cfp.ini','w+')) #写到文件中
操作配置文件。
import configparser cfp=configparser.ConfigParser() cfp.read('cfp.ini') print(cfp.sections()) #查字段的名字。['bitbucket.org', 'topsecret.server.com'] # DEFAULT是关键字(默认),下面的信息都是共有的 print('topsecret.server.com' in cfp) #判断这个字段是否在这个配置文件里。 print(cfp['bitbucket.org']['user'])#取user的值 print(cfp.items('bitbucket.org')) #取键值对 print(cfp.options('bitbucket.org')) #取key
如果有一个符合这个格式的配置文件,可以用这个模块直接操作这个配置文件。
optparser添加参数
import optparse class ArgvHandler(): def __init__(self): self.op = optparse.OptionParser() #定义参数: self.op.add_option('-s','--server',dest='server') #‘server’作为key,-s后面的值作为values。组成一个字典形式,但是不是字典。 self.op.add_option('-P','--port',dest='port') #参数解析: options,args=self.op.parse_args() #没有绑定的信息都放到args变量里去,绑定的信息都放在options里去。 print(type(options)) print(options) print(options.server) #options并不是字典,不能options[‘key‘]的形式取值。server被定义成了属性 print(args)
re模块
元字符:. ^ $ * + ? { } [ ] | ( )
在Python中正则表达式通过 re 模块实现。