一、日期和时间
时间戳
# 从1970年到现在经过的秒数
# 作用:用于时间间隔的计算
import time
print(time.time()) # 获得float型 1668571939.8918502
时间格式化符号
格式 |
含义 |
输出 |
备注 |
%a |
本地简化星期名称 |
wed |
|
%A |
本地完整星期名称 |
Wednesday |
|
%b |
本地简化月份名称 |
Nov |
|
%B |
本地完整月份名称 |
November |
|
%c |
本地相应的日期和时间表示 |
Wed Nov 16 12:36:25 2022 |
|
%d |
一个月的第几天(01-31) |
16 |
|
%H |
一天中的第几小时(24小时制) |
12 |
|
%I |
第几小时(12小时制) |
12 |
|
%j |
一年中的第几天 (001-366天) |
320 |
|
%m |
月份(01-12) |
11 |
|
%M |
分钟(01-59) |
44 |
|
%p |
本地AM或PM标识 |
PM |
只有与%I配合才有意义 |
%S |
秒 (01-61) |
21 |
闰年秒占两秒,(4年一润,百年不润,400年一润) |
%U |
一年中第几周(00-53)以星期天为一周开始, |
46 |
|
%w |
一周中的第几天(0-6,0表示星期天) |
|
|
%x |
本地相应日期 |
11/16/22 |
|
%X |
本地相应时间 |
13:03:30 |
|
%y |
去掉世纪的年份(00-99) |
22 |
|
%Y |
完整的年份 |
2022 |
|
%Z |
时区的名字(不存在时为空字符) |
中国标准时间 |
|
%% |
%字符 |
|
|
import time
print(time.strftime('%a')) # Wed
print(time.strftime("%A")) # Wednesday
print(time.strftime('%b')) # Nov
print(time.strftime("%B")) # November
print(time.strftime("%c")) # Wed Nov 16 12:36:25 2022
print(time.strftime('%d')) # 16
print(time.strftime("%H")) # 12
print(time.strftime("%I")) # 12
print(time.strftime('%j')) # 320
print(time.strftime("%m")) # 11
print(time.strftime("%M")) # 44
print(time.strftime("%p")) # PM
print(time.strftime("%S")) # 21
print(time.strftime("%U")) # 46
print(time.strftime("%w")) # 3
print(time.strftime("%W")) # 46
print(time.strftime("%x")) # 11/16/22
print(time.strftime("%X")) # 13:03:30
print(time.strftime("%y")) # 22
print(time.strftime('%Y')) # 2022
print(time.strftime("%Z")) # 中国标准时间
struct_time元组(时间结构化)
序号 |
属性 |
字段 |
值 |
0 |
tm_year |
4位数年 |
如2008 |
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(60或61是润秒) |
6 |
tm_wday |
一周的第几日 |
0-6(0是周一) |
7 |
tm_yday |
一年的第几日 |
1-366 |
8 |
tm_isdst |
夏令时 |
-1,0,1,-1是决定是否为夏令时的旗帜 |
import time
res = time.localtime() # 本地时区的struct_time
# res = time.gmtime() # UTC时区的struct_time
print(res)
# time.struct_time(
# tm_year=2022,
# tm_mon=11,
# tm_mday=16,
# tm_hour=13,
# tm_min=17,
# tm_sec=9,
# tm_wday=2,
# tm_yday=320,
# tm_isdst=0)
时间格式相互转换

mktime(struct_time):struct_time->timestamp、localtime(t)/mgtime(t):timestamp->struct_time
strftime(struct_time):struct_time->format_str、strptime(strftime):format_str->struct_time
time.ctime(t) ---> "%a %b %d %H:%M:%S %Y"
time.asctime(struct_time) --> "%a %b %d %H:%M:%S %Y"
# 时间戳转为结构化时间
# 时间戳转为结构化时间
import time
res = time.time()
struct_time =time.localtime(res)
# 结构化时间转为字符串时间
strftime_time = time.strftime('%Y-%m-%d %X',struct_time)
# 字符串时间转为结构化时间
strftime_time2 = time.strftime("%Y-%m-%d %X")
strftime_time2 = time.strftime("%Y-%m-%d %X")
struct_time2= time.strptime(strftime_time2,"%Y-%m-%d %X")
# 结构化时间转为时间戳
struct_time3 = time.localtime()
time3 = time.mktime(struct_time3)
print(time3)
# 其他asctime、ctime
print(time.asctime(time.localtime()))
print(time.ctime(time.time()))
二、time模块
函数名 |
作用 |
备注 |
time() |
获取时间戳 |
|
localtime([secs]) |
通过时间戳获取格式化时间 |
|
gmtime([secs]) |
通过时间戳获取格式化时间(UTC时间) |
|
mktime(struct_time) |
通过结构化时间获取时间戳 |
|
asctime([struct_time]) |
通过结构化时间获取"%a %b %d %H:%M:%S %Y"格式字符串 |
|
ctime([secs]) |
通过时间戳获取"%a %b %d %H:%M:%S %Y"格式字符串 |
|
sleep(secs) |
推迟运行 |
|
clock()(3.8废除) |
返回当前CPU运行到当前的时间 |
perf_counter代替 |
strftime(format,[struct_time]) |
将结构化元组时间转为格式化字符串时间 |
|
strptime(formatstr,format) |
将格式化字符串时间转为结构化元组时间 |
format需与formatstr相对应 |
三、datatime模块
# 常用模块 datatime.datatime.now()、datetime.timedelta()、datetime.datetime.fromtimestamp(t)
# 三周以后
import datetime
print(datetime.datetime.now()+datetime.timedelta(weeks=3))
# 10天前
print(datetime.datetime.now()+datetime.timedelta(days=-10))
四、random模块
import random
print(random.random()) # 生成0-1之间的随机小数
print(random.randint(1,3)) # [1,3] 生成大于等于1小于等于3的整数
print(random.randrange(1,3)) # [1,3) 大于等于1小于3的整数
print(random.choice([1,2,3,4,5,6])) # 选取其中一个
print(random.choices([1,2,3,4,5,6],weights=[1,2,3,4,5,6],k=5)) # k选取次数,weights:相对权重,返回一个列表
print(random.sample([1,2,3,4,5],4)) # 返回任意4(可变)个元素组合
print(random.uniform(1,3)) # (1,3) 大于1小于3的任意小数
res = [1,2,3,4,5]
random.shuffle(res) # 改变原序列,洗牌,打乱顺序
print(res)
os模块
属性函数 |
作用 |
os.getcwd() |
获取当前工作目录,即当前python脚本工作的目录路径 |
os.chdir("dirname") |
改变当前脚本工作目录;相当于shell下cd |
os.curdir |
返回当前目录: ('.') |
os.pardir |
获取当前目录的父目录字符串名:('..') |
os.makedirs('name1/name2') |
可生成多层递归目录 |
os.removedirs('name1') |
若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 |
os.mkdir(dirname) |
生成单级目录;相当于shell中mkdir dirname |
os.rmdir(dirname) |
删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname |
os.listdir(dirname) |
列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 |
os.remove(filename) |
删除一个文件 |
os.rename(oldname,newname) |
重命名文件/目录 |
os.stat('path/filename') |
获取文件/目录信息 |
os.sep |
输出操作系统特定的路径分隔符,win下为"",Linux下为"/" |
os.linesep |
输出当前平台使用的行终止符,win下为"tn",Linux下为"n" |
os.pathsep |
输出用于分割文件路径的字符串 win下为;,Linux下为: |
os.name |
输出字符串指示当前使用平台。win->'nt'; Linux->'posix' |
os.system('shell 命令') |
运行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.isdir(path) |
如果path是一个存在的文件,返回True。否则返回False |
os.path.isfile(path) |
如果path是一个存在的目录,则返回True。否则返回False |
os.path.join(path1,[path2]) |
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 |
os.path.getatime(path) |
返回path所指向的文件或者目录的最后存取时间 |
os.path.getctime(path) |
|
os.path.getmtime(path) |
返回path所指向的文件或者目录的最后修改时间 |
os.path.getsize(path) |
返回path的大小 |
os.path.normcase(path) |
在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。 |
os.path.normpath(path) |
规范化路径,如..和/ |
# 在python3.5之后,推出了一个新的模块pathlib
from pathlib import Path
res = Path(__file__).parent.parent
print(res)
sys模块
属性函数 |
作用 |
sys.argv |
命令行参数List,第一个元素是程序本身路径 |
sys.exit(0) |
退出程序,正常退出时exit(0) |
sys.version |
获取Python解释程序的版本信息 |
sys.maxint---(python2) |
最大的Int值 |
sys.maxsize----(python3) |
最大的Int值 |
sys.path |
返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 |
sys.platform |
返回操作系统平台名称 |
shutill