目录
一、time与datetime模块
1.1、time模块时间的三种格式
1.1.1、时间戳(给机器用的,秒数,用于时间计算)
时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
time.time()
start=time.time()
print(start,type(start)) # 1596089486.957195 <class 'float'>
1.1.2、格式化的字符串(用于显示给人看)
格式化的时间字符串(Format String)
time.strftime()
res=time.strftime("%Y-%m-%d %H:%S:%M %p")
print(res,type(res)) #2020-07-30 14:03:15 PM <class 'str'>
res=time.strftime("%Y-%m-%d %X")
print(res,type(res)) #2020-07-30 14:15:03 <class 'str'>
1.1.3、结构化的时间=>获取时间的某一部分
struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
time.localtime()东八区时间
time.gmtime()世界标准时间
res=time.localtime()
res1=time.gmtime()
print(res,type(res))
print(res1,type(res1))
print(res.tm_year)
print(res.tm_hour)
运行结果:
time.struct_time(tm_year=2020, tm_mon=7, tm_mday=30, tm_hour=14, tm_min=19, tm_sec=7, tm_wday=3, tm_yday=212, tm_isdst=0) <class 'time.struct_time'>
time.struct_time(tm_year=2020, tm_mon=7, tm_mday=30, tm_hour=6, tm_min=19, tm_sec=7, tm_wday=3, tm_yday=212, tm_isdst=0) <class 'time.struct_time'>
2020
14
1.2、时间转换
1.2.1、时间戳—》格式化的字符串
strftime():把一个struct_time转化为格式化时间字符串
print(time.strftime("%Y-%m-%d %X", time.localtime())) # 2020-07-30 14:52:34
struct_time=time.localtime(3333333.33)
res=time.strftime("%Y:%m",struct_time)
print(res) # 1970:02
1.2.2、格式化的字符串—》时间戳
mktime(t) : 将一个struct_time转化为时间戳
print(time.mktime(time.localtime())) # 1596091829.0
time.strptime()
把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作
struct_time=time.strptime("2017-07-03 11:11:11","%Y-%m-%d %H:%M:%S")
res=time.mktime(struct_time)
print(res) # 1499051471.0
1.2.3、ctime和asctime
print(time.ctime(3333.3))#Thu Jan 1 08:55:33 1970
print(time.asctime(time.localtime(3333.3)))#Thu Jan 1 08:55:33 1970
1.2.4、time.sleep()
time.sleep(3)
1.3、datetime
1.3.1、时间加减
import datetime
print(datetime.datetime.now())#2020-07-30 15:16:14.272784
print(datetime.date.fromtimestamp(time.time()))# 时间戳直接转成日期格式2020-07-30
print(datetime.datetime.fromtimestamp(time.time()))#2020-07-30 15:20:59.089128
res=datetime.datetime.now() + datetime.timedelta(days=3)#当前时间+3天
res1=datetime.datetime.now() + datetime.timedelta(days=-3)
print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
print(res)
二、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([1,'23',[4,5]])) #1或者23或者[4,5]
print(random.sample([1,'23',[4,5]],2))#列表元素任意2个组合
print(random.uniform(1,3))#大于1小于3的小数,如1.927109612082716
item=[1,3,5,7,9]
random.shuffle(item) #打乱item的顺序,相当于"洗牌"
print(item) #[1, 5, 7, 3, 9]
案例:随机验证码
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(6))
三、os模块
import os
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
print(os.listdir("."))
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
cmd=input(r"""
Microsoft Windows [版本 10.0.17763.1339]
(c) 2018 Microsoft Corporation。保留所有权利。
%s=====> """ %os.getcwd())
res=os.system(cmd)
print('='*100)
print(res)
print(__file__)
print(os.path.abspath(__file__))
res=os.path.split("D:/python全栈15期/day21/03 os模块.py")
print(res)
print(os.path.basename("D:/python全栈15期/day21/03 os模块.py"))
print(os.path.dirname("D:/python全栈15期/day21/03 os模块.py"))
print(os.path.exists("D:/python全栈15期/day21/"))
print(os.path.isabs("D:/python全栈15期/day21/"))
print(os.path.isabs("/python全栈15期/day21/"))
print(os.path.isabs("python全栈15期/day21/"))
print(os.path.join("a",'b','D:\c','d.txt'))
print(os.path.dirname(os.path.dirname(__file__)))
res=os.path.join(
__file__,
"..",
".."
)
print(os.path.normpath(res))
print(os.path.getsize(__file__))
四、 subprocess
import subprocess
#subprocess.PIPE 管道,相当于共享空间
# pwd ; sasdfasdf ;echo 123
obj = subprocess.Popen("diasfdafr", shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
res1=obj.stdout.read()
res2=obj.stderr.read()
# print(res1.decode('gbk'))
print(res2.decode('gbk'))
运行结果:
'diasfdafr' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
五、sys模块
sys.argv 命令行参数List,第一个元素是程序本身路径
import sys
# sys.path
print(sys.argv)
# src_file = input("源文件路径:").strip()
# dst_file = input("目标文件路径:").strip()
src_file = sys.argv[1]#从cmd里获取文件路径
dst_file = sys.argv[2]
with open(r"%s" %src_file,mode='rb') as f1,open(r"%s" %dst_file,mode='wb') as f2:
for line in f1:
f2.write(line)
六、打印进度条
import time
def progress(percent):
if percent > 1:
percent=1
print("\r[%-50s] %d%%" % ("#"*int(50*percent),int(100 * percent)),end='')
total_size = 1025
recv_size = 0
while recv_size < total_size:
# 每次下载1024
time.sleep(0.3)
recv_size+=1024
percent = recv_size / total_size
progress(percent)