1.time模块(★★★)
在Python中,通常有这几种方式来表示时间:
1.时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
2.格式化的时间字符串(format_string)
3.元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
实例:
import time
# 1 time() :返回当前时间的时间戳,秒单位
print(time.time()) # 1473525444.037215
# ------------------------------------------------------------
# 2 localtime([secs])
# 将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。
time.localtime() #time.struct_time(tm_year=2020, tm_mon=7, tm_mday=28, tm_hour=9, tm_min=29, tm_sec=10, tm_wday=1, tm_yday=210, tm_isdst=0
time.localtime(1595899886.8968737)
# -------------------------------------------------------------
# 3 gmtime([secs]) 和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。secs参数未提供,则以当前时间为准。
time.gmtime()#time.struct_time(tm_year=2020, tm_mon=7, tm_mday=28, tm_hour=1, tm_min=37, tm_sec=31, tm_wday=1, tm_yday=210, tm_isdst=0)
time.gmtime(1595899886.8968737)
# --------------------------------------------------------------
# 4 mktime(t) : 将一个struct_time转化为时间戳。
print(time.mktime(time.localtime()))#1595900628.0
print(time.mktime(time.gmtime()))#1595871828.0
# ----------------------------------------------------------------------------
# 5 asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。
# 如果没有参数,将会将time.localtime()作为参数传入。
print(time.asctime())#Tue Jul 28 22:08:06 2020
t=time.localtime()
time.asctime(t)#Tue Jul 28 22:08:06 2020
# ----------------------------------------------------------------------------------------------
# 6 ctime([secs]) : 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为
# None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
time.ctime(1595945286)#Tue Jul 28 22:08:06 2020
time.ctime()#Tue Jul 28 22:15:58 2020
# --------------------------------------------------------------------------------------
# 7 strftime(format[, t]) : 把一个代表时间的元组或者struct_time(如由time.localtime()和
# time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。
print(time.strftime("%Y-%m-%d %X", time.localtime()))#2020-07-28 22:19:46,"%Y-%m-%d %X"为年月日时分秒的格式
# -------------------------------------------------------------------------------------
# 8 time.strptime(string[, format])
# 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
print(time.strptime('2020-07-28 22:19:46', '%Y-%m-%d %X'))#time.struct_time(tm_year=2020, tm_mon=7, tm_mday=28, tm_hour=22, tm_min=19, tm_sec=46, tm_wday=1, tm_yday=210, tm_isdst=-1)
# ----------------------------------------------------------------------------
# 9 sleep(secs)
# 线程推迟指定的时间运行,单位为秒。
time.sleep(10)
# ---------------------------------------------------
# 10 perf_counter()
# 这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。
# 而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行 时间,即两次时间差。
# PS: python3.3之前是用clock(),之后版本弃用改为perf_counter()
a=time.perf_counter()
time.sleep(10)
s=time.perf_counter()
print(s-a)#10.0000659
几种时间的转换
struct_time(元组)
timestamp(时间戳)
format_string(格式化的时间字符串)
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([1,'23',[4,5]]))#23 随机从列表取一个值
print(random.sample([1,'23',[4,5]],2))#[[4, 5], '23'] 随机从列表取出指定个数个元素组成新列表
print(random.uniform(1,3))#1.927109612082716 在 [x, y] 范围内随机生成下一个实数
item=[1,3,5,7,9]
random.shuffle(item) #序列的所有元素随机排序
print(item)
写一个随机生成4位验证码的函数
def v_code():
code = ''#接收返回值
for i in range(5):#循环4次
num=random.randint(0,9)#每次循环取[0,9]中一个值
alf=chr(random.randint(65,90)) #随机生成A-Z中一个
add=random.choice([num,alf]) #随机选上面生成的字母或者数字
code += str(add) #与code做字符串拼接重新赋值给code
return code
print(v_code())
print(v_code())
3. os模块(★★★)
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下为"\r\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所指向的文件或者目录的最后修改时间