一 time与datetime模块
1.1 time模块
import time
优先掌握
#时间戳timestamp:从1970年到现在经过的秒数.作用:用于时间间隔的计算 print(time.time()) #按照某种格式显示的时间Format String:2020-03-30 11:11:11 AM.作用:用于展示时间 print(time.strftime('%Y-%m-%d %H:%M:%S %p')) #结构化的时间,作用:用于单独获取时间的某一部分。结构化的时间(struct_time)元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时) res = print(time.localtime()) print(res) print(res.tm_year) #睡眠(暂停) print(time.sleep(3))
需要掌握
#时间格式的转换 # struct_time->时间戳 s_time = time.localtime() print(time.mktime(s_time))# mktime(t) : 将一个struct_time转化为时间戳。 # 时间戳->struct_time tp_time=time.time() print(time.localtime(tp_time))
部分掌握
#strftime转化为格式化的时间字符串 s_time=time.localtime() print(time.strftime('%Y-%m-%d %H:%M:%S',s_time)) #把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。 print(time.strptime('2020-03-30 16:16:38','%Y-%m-%d %H:%M:%S')) # !!!真正需要掌握的只有一条:format string<------>timestamp # format string--->struct_time--->timestamp struct_time=time.strptime('1988-03-03 11:11:11','%Y-%m-%d %H:%M:%S') timestamp=time.mktime(struct_time) print(timestamp) # format string<---struct_time<---timestamp res=time.strftime('%Y-%m-%d %X',time.localtime()) print(res)
补充:世界标准时间和本地时间
print(time.localtime()) print(time.gmtime()) # 世界标准时间,了解
了解
print(time.asctime()) #把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为 #None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
1.2 datetime
import datetime print(datetime.date.fromtimestamp(time.time()) ) # 时间戳直接转成日期格式 print(datetime.datetime.now()) # 当前时间 print(datetime.datetime.now() + datetime.timedelta(days=3)) #当前时间加3天 print(datetime.datetime.now() + datetime.timedelta(weeks=1))#当前时间加1星期 print(datetime.datetime.utcnow()) #时间标准时间 c_time = datetime.datetime.now() print(c_time.replace(minute=3,hour=2)) #时间替换
二 random模块
import random print(random.random())#(0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3))# [1,3] 大于等于1且小于等于3之间的整数 print(random.randrange(1,3))# [1,3) 大于等于1且小于3之间的整数 print(random.choice([111,'aaa',[1,2]])) #在元素内随机选择一个 print(random.sample([111,'zz',[1,2]]),2) # 列表元素任意2个组合 print(random.uniform(1,3)) # 大于1小于3的小数,如1.927109612082716 item = [1, 3, 5, 7, 9] random.shuffle(item) # 打乱item的顺序,相当于"洗牌" print(item)
验证码的案例
import random def make_code(size=4): res = '' for i in range(size): s1 = chr(random.randint(65,90)) s2 = str(random.randint(0,9)) res+=random.choice([s1,s2]) return res print(make_code(6))
三 os模块
print(os.listdir('.')# 获取某一个文件夹下所有的子文件以及子文件夹的名字 print(os.path.getsize('.'))#返回path的大小 os.remove() #删除一个文件 os.rename("oldname","newname") #重命名文件/目录 os.system(command) #将字符串转换成命令在终端运行 print(os.environ) #获取系统环境变量 os.environ['aaaaaaaaaa']='111'# 规定:key与value必须都为字符串 print(os.environ) print(os.path.dirname(r'/a/b/c/d.txt'))#返回path的目录 print(os.path.basename(r'/a/b/c/d.txt'))#返回path最后的文件名 print(os.path.isfile(path))#如果path是一个存在的文件,返回True。否则返回False 可以用来判断是否为文件 print(os.path.isdir(path))#如果path是一个存在的目录,则返回True。否则返回False print(os.path.join('a','/','b','c','d'))#将多个路径组合后返回,第一个绝对路径(/)之前的参数将被忽略
print(os.getcwd())#获取当前工作目录,即当前python脚本工作的目录路径 print(os.chdir("dirname")) #改变当前脚本工作目录;相当于shell下cd os.makedirs('dirname1/dirname2')#可生成多层递归目录 os.removedirs('dirname1')#若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') #生成单级目录;相当于shell中mkdir dirname os.rmdir('dirname') #删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.stat('path/filename') #获取文件/目录信息 os.sep #输出操作系统特定的路径分隔符,win下为"\",Linux下为"/" os.linesep #输出当前平台使用的行终止符,win下为" ",Linux下为" " os.pathsep #输出用于分割文件路径的字符串 win下为;,Linux下为: os.name #输出字符串指示当前使用平台。win->'nt'; Linux->'posix' os.path.abspath(path) #返回path规范化的绝对路径 os.path.split(path) #将path分割成目录和文件名二元组返回 os.path.split(path)#的第二个元素 os.path.exists(path) #如果path存在,返回True;如果path不存在,返回False os.path.isabs(path) #如果path是绝对路径,返回True os.path.getatime(path) #返回path所指向的文件或者目录的最后存取时间 os.path.getmtime(path) #返回path所指向的文件或者目录的最后修改时间
os处理路径的几种方式
# 方式一:推荐用这种 BASE_DIR=os.path.dirname(os.path.dirname(__file__)) print(BASE_DIR) #方式二 BASE_DIR=os.path.normpath(os.path.join( __file__, '..', '..' )) print(BASE_DIR) #方式三# 在python3.5之后,推出了一个新的模块pathlib from pathlib import Path res = Path(__file__).parent.parent print(res) #路径的拼接 res=Path('/a/b/c') / 'd/e.txt' print(res) print(res.resolve())
四 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(percent*width)*'*') print(' %s %s%%'%(show_str,int(percent*100)),end='') data_size=10250 recv_size=0 while recv_size < data_size: time.sleep(0.1) #模拟数据的传输延迟 recv_size+=1024 #每次收1024 percent=recv_size/data_size #接收的比例 progress(percent,width=70) #进度条的宽度70