time模块,random模块,OS模块,sys模块
time模块
时间展示
import time #导入模块
print(time.time()) #时间戳时间
print(time.strftime('%Y-%m-%d %x')) #字符串格式化时间
print(time.strftime('%Y-%m-%d %H:%M:%S'))
print(time.localtime()) #结构化时间本地时间
print(time.gmtime()) #结构化时间英国时间
#时间戳和格式化时间都是依赖于结构化时间
p = time.strptime('2018-6-16', '%Y-%m-%d')
输出:
时间转换
import time
print(time.gmtime(1500000000)) #时间戳-->结构化时间
print(time.localtime(1500000))
#结构化时间-->时间戳
time_tuple = time.localtime(15000000)
print(time.mktime(time_tuple))
#结构化时间-->字符串时间
print(time.strftime("%Y-%m-%d %x"))
print(time.strftime("%Y-%m-%d ", time.localtime(1800000000)))
#字符串时间-->结构化时间
print(time.strptime("2018-10-17", "%Y-%m-%d"))
print(time.strptime("01/01/2018", "%m/%d/%Y"))
#结构化时间 --> %a %b %d %H:%M:%S %Y串
time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
print(time.asctime(time.localtime(150000000)))
print(time.asctime())
#时间戳 --> %a %b %d %H:%M:%S %Y串
time.ctime(时间戳) 如果不传参数,直接返回当前时间的格式化串
print(time.ctime())
print(time.ctime(18000000))
python中的日期时间格式符号
1 %y 两位数的年份表示(00-99)
2 %Y 四位数的年份表示(000-9999)
3 %m 月份(01-12)
4 %d 月内中的一天(0-31)
5 %H 24小时制小时数(0-23)
6 %I 12小时制小时数(01-12)
7 %M 分钟数(00=59)
8 %S 秒(00-59)
9 %a 本地简化星期名称
10 %A 本地完整星期名称
11 %b 本地简化的月份名称
12 %B 本地完整的月份名称
13 %c 本地相应的日期表示和时间表示
14 %j 年内的一天(001-366)
15 %p 本地A.M.或P.M.的等价符
16 %U 一年中的星期数(00-53)星期天为星期的开始
17 %w 星期(0-6),星期天为星期的开始
18 %W 一年中的星期数(00-53)星期一为星期的开始
19 %x 本地相应的日期表示
20 %X 本地相应的时间表示
21 %Z 当前时区的名称
22 %% %号本身
利用time计算时间差
import time
def cal_time(fmt_time, fmt):
now = time.time()
time_before = time.mktime(time.strptime(fmt_time, fmt))
sub_time = now - time_before
struct_time = time.gmtime(sub_time)
return '过去了%d年%d月%d天%d小时%d分钟%d秒' % (struct_time.tm_year - 1970, struct_time.tm_mon - 1,
struct_time.tm_mday - 1, struct_time.tm_hour,
struct_time.tm_min, struct_time.tm_sec)
ret = cal_time('2018-8-17 08:30:00', '%Y-%m-%d %H:%M:%S')
print(ret)
random模块
import random
#随机小数
print(random.random()) # 大于0且小于1之间的小数
print(random.uniform(1, 4)) #大于1小于4的小数
#随机整数
print(random.randrange(1, 2))
print(random.randint(1, 1000)) # 大于等于1且小于等于1000之间的整数
print(random.randrange(1, 20, 2)) # 大于等于1且小于10之间的奇数
#随机选择一个返回
print(random.choice([1, '23', [4, 5]])) #1或者23或者[4,5]
随机选择多个返回
print(random.sample([1, '23', [4, 5]], 2)) #随机选择多个返回,返回的个数为函数的第二个参数
#打乱列表顺序
item = [1, 3, 5, 7, 9]
random.shuffle(item) #打乱次序
print(item)
基于random的验证码例子
def v_code():
code = ''
for i in range(5):
num = random.randint(0, 9)
alf = chr(random.randint(65, 90))
add = random.choice([num, alf])
code = "".join([code, str(add)])
return code
print(v_code())
OS模块
os.path
例子
import os
print(os.getcwd()) # 获取当前文件所在的路径
print(os.curdir)
print(os.pardir)
os.chdir("D:\\")
os.makedirs('dirname1/dirname2') #创建多级目录文件
os.mkdir('dirname/son_dir') #创建单级目录文件
os.removedirs('dirname1/d2')
print(os.listdir('D:\myPython'))
os.remove()#删除一个文件
print(os.stat(r'D:\myPython'))
print(os.name)
path = 'python%2.mok.py'%os.sep
os.system("dir")
ret = os.popen("dir").read()
print(ret)
print(os.path .abspath('userinfo') ) #绝对路径
print(os.path.abspath('userinfo'))
print(os.path.split(os.path.abspath('userinfo')))
print(os.path.dirname(os.path.abspath('userinfo')))
print(os.path.basename(os.path.abspath('userinfo')))
print(os.path.exists(r'D:\python11\day28\userinfo2'))
print(os.path.isabs(r'userinfo2'))
print(os.path.isfile(r'userinfo'))
print(os.path.isdir(r'dirname1'))
print(os.path.join('D:\\python11\\day28','userinfo'))
print(os.path.getsize(r'D:\python11'))
print(os.path.getsize(r'D:\python'))
os.stat(‘path\filename’) 获取文件\目录信息的结构说明
stat 结构:
st_mode: inode 保护模式
st_ino: inode 节点号。
st_dev: inode 驻留的设备。
st_nlink: inode 的链接数。
st_uid: 所有者的用户ID。
st_gid: 所有者的组ID。
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
st_atime: 上次访问的时间。
st_mtime: 最后一次修改的时间。
st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,<br>在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。
找一个别人的例子
import os
# 1.切换路径=============
d = os.getcwd() #获取当前的工作路径
os.chdir('D:\\')#目录的切换
print(os.getcwd())
# (切换过去怎么回来呢?再chdir一下就回来了)
os.chdir(d)
print(os.getcwd())
# 2.执行系统命令=============
# system和popen都是执行系统命令的,但是popen比较好用,因为它有返回值
os.system('dir') #显示的是gbk的编码,
# 解决system乱码的方法
ret = os.popen('dir') #popen是有返回值的,而且自己转码了
print(ret.read())
# 3.创建文件夹=和创建文件==========
os.mkdir('temp') #生成一个文件夹,,只能生成一个
os.mkdir(r'temp2\inner') #这样就报错了
os.makedirs(r'temp1\inner',exist_ok=True) #创建多级目录
os.makedirs(r'temp1\inner\inner2',exist_ok=True) #创建多级目录
# 那么如果文件夹已经存在了,就报错了,那我如果不想
# 让报错(就是假如存在,就不创建也不报错),那么就加上exist_ok=True
# 创建文件
f = open(r'temp1\inner\file','w')
f.close()
# 4.======重命名文件夹=====
os.rename(r'temp1\inner\inner2','temp1\inner\haiyan')
# 5.=====删除文件夹和删除文件=========
# 先删文件,
os.remove(r'temp1\inner\file')
# 再删文件夹
os.removedirs(r'temp1\inner\haiyan') #删除一个文件夹的时候,如果上一级的文件夹是空的,就一并删除了。以此类推
os.rmdir((r'temp1\inner') )#只删除一个文件夹
# 6.子目录========
print(os.listdir(os.getcwd())) #打印当前目录下的目录
print(os.walk(os.getcwd())) #<generator object walk at 0x00000000021C6728>
ret = os.walk(os.getcwd()) #拿到的东西比较多,如果你关心子目录下的东西,就用walk
print(list(ret))
# 7.====获取文件或者目录的信息的结构说明========
print(os.stat('temp'))
# st_atime:上次访问的时间
# st_mtime:最后一次修改的时间
# st_ctime:最新的更新时间
print(os.sep) # 打印的是\
print(os.getcwd())
file_path = '%s%s%s'%(os.getcwd(),os.sep,'filename') #拼接一个路径(方式一)
print(file_path)
print(os.path.join(os.getcwd(),'filename'))#拼接一个路径(方式二)
# 8.====字符串指示当前使用平台
print(os.name) #如果是win,则打印的是nt 如果是,linux,打印poxis
# 应用场景:当你输入命令的时候,要判断是win系统还是 linux系统。就可以用
# os.name去判断了
# 9.===获取系统环境变量=====
print(os.environ)
# 10.路径相关的=======
print(os.path.abspath('namedtuple.py'))
print(os.path.dirname(os.path.abspath('namedtuple.py')))
print(os.path.dirname(os.path.dirname(os.path.abspath('namedtuple.py'))))
print(os.path.exists(os.path.abspath('namedtuple.py')))
sys模块
sys模块是与python解释器交互的一个接口
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
sys.version 获取Python解释程序的版本信息
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
例子:
import sys
print(sys.argv) #实现从程序外部向程序传递参数。(在命令行里面输打开路径执行)
name=sys.argv[1] #命令行参数List,第一个元素是程序的本身路径
password = sys.argv[2]
if name=='egon' and password == '123':
print('继续执行程序')
else:
exit()
sys.exit()#退出程序,正常退出时exit(0)
print(sys.version)#获取python解释的版本信息
print(sys.maxsize)#最大能表示的数,与系统多少位有关
print(sys.path)#返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
print(sys.platform)#返回操作系统平台名称
print(sys.argv) #['D:/myPython/sys模块.py']列表。当前文件的文件路径
#执行一个程序有两种方法:(1)debug执行;(2)直接执行
import logging
inp = sys.argv[1] if len(sys.argv) > 1 else 'warning'
logging.basicConfig(level=getattr(logging, 'DEBUG'))
num = (input(">>>"))
logging.debug(num)
a = num * 100
logging.debug(a)
b = a - 10
logging.debug(b)
c = b + 5
print(c)