01 时间模块
# import time
'''
掌握
'''
# print(time.time())
# '''
# 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
# 1558179986.5781155
# '''
# print(time.strftime('%Y_%m_%d')) #2019_05_18
# print(time.strftime('%Y-%m-%d %H:%M:%S'))
# print(time.strftime('%Y-%m-%d %X'))
#%X Locale’s appropriate time representation.本地相应时间
# print(time.localtime())
#本地东八区时间,time.struct_time(tm_year=2019, tm_mon=5, tm_mday=18, tm_hour=21, tm_min=5, tm_sec=17, tm_wday=5, tm_yday=138, tm_isdst=0)
# print(time.gmtime())
#格林尼治时间,时间标准时间,time.struct_time(tm_year=2019, tm_mon=5, tm_mday=18, tm_hour=13, tm_min=6, tm_sec=28, tm_wday=5, tm_yday=138, tm_isdst=0)
'''
记不住查表
'''
#时间戳转结构化的时间
# print(time.localtime(456725345))
#time.struct_time(tm_year=1984, tm_mon=6, tm_mday=22, tm_hour=12, tm_min=9, tm_sec=5, tm_wday=4, tm_yday=174, tm_isdst=0)
# print(time.gmtime(456725345))
#time.struct_time(tm_year=1984, tm_mon=6, tm_mday=22, tm_hour=4, tm_min=9, tm_sec=5, tm_wday=4, tm_yday=174, tm_isdst=0)
#结构化时间转时间戳
# print(time.mktime(time.localtime())) #1558186084.0
# print(time.strftime('%Y-----%m',time.localtime())) #2019-----05
# print(time.strptime('2017-03-01','%Y-%m-%d'))
#time.struct_time(tm_year=2017, tm_mon=3, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=60, tm_isdst=-1)
# time.sleep(3)
# 结构化时间转换成%a %b %d %H %M %S %Y
# print(time.asctime(time.localtime())) #Sat May 18 21:35:32 2019
# 时间戳转换成%a %b %d %H %M %S %Y
# print(time.ctime(456725345)) #Fri Jun 22 12:09:05 1984
# print(time.strptime('1989-09-01 12:50:10','%Y-%m-%d %H:%M:%S'))
#time.struct_time(tm_year=1989, tm_mon=9, tm_mday=1, tm_hour=12, tm_min=50, tm_sec=10, tm_wday=4, tm_yday=244, tm_isdst=-1)
import datetime
# print(datetime.datetime.now()) #2019-05-18 21:52:38.435121
# print(datetime.datetime.fromtimestamp(1558187721.8939993)) #时间戳转换为datetime格式
print(datetime.datetime.now() + datetime.timedelta(days=3))
print(datetime.datetime.now() + datetime.timedelta(weeks=3))
print(datetime.datetime.now() + datetime.timedelta(hours=-3))
print(datetime.datetime.now() + datetime.timedelta(hours=3))
'''
2019-05-21 21:58:12.078189
2019-06-08 21:58:12.078276
2019-05-18 18:58:12.078308
2019-05-19 00:58:12.078336
'''
print(datetime.datetime.now().replace(year=1989,hour=12)) #1989-05-18 12:59:11.153818
格式 | 含义 | 备注 |
%a | 本地(locale)简化星期名称 | |
%A | 本地完整星期名称 | |
%b | 本地简化月份名称 | |
%B | 本地完整月份名称 | |
%c | 本地相应的日期和时间表示 | |
%d | 一个月中的第几天(01 - 31) | |
%H | 一天中的第几个小时(24 小时制,00 - 23) | |
%l | 一天中的第几个小时(12 小时制,01 - 12) | |
%j | 一年中的第几天(001 - 366) | |
%m | 月份(01 - 12) | |
%M | 分钟数(00 - 59) | |
%p | 本地 am 或者 pm 的相应符 | 注1 |
%S | 秒(01 - 61) | 注2 |
%U | 一年中的星期数(00 - 53 星期天是一个星期的开始)第一个星期天之前的所有天数都放在第 0 周 | 注3 |
%w | 一个星期中的第几天(0 - 6,0 是星期天) | 注3 |
%W | 和 %U 基本相同,不同的是 %W 以星期一为一个星期的开始 | |
%x | 本地相应日期 | |
%X | 本地相应时间 | |
%y | 去掉世纪的年份(00 - 99) | |
%Y | 完整的年份 | |
%z | 用 +HHMM 或 -HHMM 表示距离格林威治的时区偏移(H 代表十进制的小时数,M 代表十进制的分钟数) | |
%Z | 时区的名字(如果不存在为空字符) | |
%% | %号本身 |
注1:“%p”只有与“%I”配合使用才有效果。
注2:范围真的是 0 ~ 61(你没有看错哦^_^);60 代表闰秒,61 是基于历史原因保留。
注3:当使用 strptime() 函数时,只有当在这年中的周数和天数被确定的时候 %U 和 %W 才会被计算。
时间元祖(time.struct_time):
gmtime(),localtime() 和 strptime() 以时间元祖(struct_time)的形式返回。
索引值(Index) | 属性(Attribute) | 值(Values) |
0 | tm_year(年) | (例如:2015) |
1 | tm_mon(月) | 1 ~ 12 |
2 | tm_mday(日) | 1 ~ 31 |
3 | tm_hour(时) | 0 ~ 23 |
4 | tm_min(分) | 0 ~ 59 |
5 | tm_sec(秒) | 0 ~ 61(见下方注1) |
6 | tm_wday(星期几) | 0 ~ 6(0 表示星期一) |
7 | tm_yday(一年中的第几天) | 1 ~ 366 |
8 | tm_isdst(是否为夏令时) | 0, 1, -1(-1 代表夏令时) |
注1:范围真的是 0 ~ 61(你没有看错哦^_^);60 代表闰秒,61 是基于历史原因保留。
02 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,'a','b',3],2)) #列表中任意两个的组合
# print(random.uniform(1,3)) #大于1小于3的小数
# l=[1,2,3,4,5]
# random.shuffle(l) #洗牌
# print(l)
# def make_code(n):
# res=''
# for i in range(n):
# s1=str(random.randint(0,9))
# s2=chr(random.randint(65,90))
#
# res+=random.choice([s1,s2])
#
# return res
#
# print(make_code(4))
#chr:将十进制的数字按照ASCII表转换成字母,ord是反过来
print(chr(65))
print(chr(66))
print(chr(90))
print(ord('M'))
03 os模块
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回
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;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
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所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小