一.模块:就是一个包含了python定义和声明的文件,文件名是模块名字加上.py的后缀.
但其实import加载的模块分为四个通用类别:
1.使用python编写的代码(.py文件)
2.已被编译为共享库或DLL的c或c++扩展
3.包好一组模块的包
4.使用c编写并链接到python解释器的内置模块
为何使用模块:将程序写到文件中永久保存下来,把他们当做模块导入到其他的模块中,实现了功能的重复利用.
时间模块: 通常有这三种方式来表示时间:时间戳,元祖(struct_time),格式化的时间字符串
(1)时间戳:通常说时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.运行"type(time.time())",返回的是float类型
(2)格式化的时间字符串(Format String): "1999-12-06"
%y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身
(3)元祖(struct_time):struct_time元祖共有9个元素(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
#导入时间模块 >>>import time #时间戳 >>>time.time() 1500875844.800804 #时间字符串 >>>time.strftime("%Y-%m-%d %X") '2017-07-24 13:54:37' >>>time.strftime("%Y-%m-%d %H-%M-%S") '2017-07-24 13-55-04' #时间元组:localtime将一个时间戳转换为当前时区的struct_time time.localtime() time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=13, tm_min=59, tm_sec=37, tm_wday=0, tm_yday=205, tm_isdst=0)
时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元祖是用来操作时间的
Timestamp:时间戳 格式化Format string
#时间戳-->结构化时间 #time.gmtime(时间戳) #UTC时间,与英国伦敦当地时间一致 #time.localtime(时间戳) #当地时间。例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间 >>>time.gmtime(1500000000) time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0) >>>time.localtime(1500000000) time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0) #结构化时间-->时间戳 #time.mktime(结构化时间) >>>time_tuple = time.localtime(1500000000) >>>time.mktime(time_tuple) 1500000000.0
#结构化时间-->字符串时间 #time.strftime("格式定义","结构化时间") 结构化时间参数若不传,则显示当前时间 >>>time.strftime("%Y-%m-%d %X") '2017-07-24 14:55:36' >>>time.strftime("%Y-%m-%d",time.localtime(1500000000)) '2017-07-14' #字符串时间-->结构化时间 #time.strptime(时间字符串,字符串对应格式) >>>time.strptime("2017-03-16","%Y-%m-%d") time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1) >>>time.strptime("07/24/2017","%m/%d/%Y") time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)
#结构化时间 --> %a %b %d %H:%M:%S %Y串 #time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串 >>>time.asctime(time.localtime(1500000000)) 'Fri Jul 14 10:40:00 2017' >>>time.asctime() 'Mon Jul 24 15:18:33 2017' #时间戳 --> %a %b %d %H:%M:%S %Y串 #time.ctime(时间戳) 如果不传参数,直接返回当前时间的格式化串 >>>time.ctime() 'Mon Jul 24 15:19:07 2017' >>>time.ctime(1500000000) 'Fri Jul 14 10:40:00 2017'
#时间差 import time true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S')) time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S')) dif_time=time_now-true_time struct_time=time.gmtime(dif_time) print('过去了%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))
random模块
>>> import random #随机小数 >>> random.random() # 大于0且小于1之间的小数 0.7664338663654585 >>> random.uniform(1,3) #大于1小于3的小数 1.6270147180533838 #恒富:发红包 #随机整数 >>> random.randint(1,5) # 大于等于1且小于等于5之间的整数 >>> random.randrange(1,10,2) # 大于等于1且小于10之间的奇数 #随机选择一个返回 >>> random.choice([1,'23',[4,5]]) # #1或者23或者[4,5] #随机选择多个返回,返回的个数为函数的第二个参数 >>> random.sample([1,'23',[4,5]],2) # #列表元素任意2个组合 [[4, 5], '23'] #打乱列表顺序 >>> item=[1,3,5,7,9] >>> random.shuffle(item) # 打乱次序 >>> item [5, 1, 3, 7, 9] >>> random.shuffle(item) >>> item [5, 9, 7, 1, 3]
生成随机验证码 import 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模块是与操作系统交互的一个接口
# 文件和文件夹相关 # os.remove # os.rename # os.mkdir('tmp') # os.rmdir('tmp') # os.makedirs('dir1/dir2/dir3') # os.removedirs('dir1/dir2/dir3') # 删除的是空文件夹 # print(os.listdir('E:s17')) # 给我一个路径,把这个路径下的所有的文件都输出 # print(os.stat(r'E:s17day171.今日内容.py'))
# 操作系统,python工作目录相关的 # os.system("bash command") 运行shell命令,直接显示 # os.popen("bash command).read() 运行shell命令,获取执行结果 # os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 # os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd # 在python中执行操作系统的命令 # ret = os.system('dir') # 和操作系统打交道的, # ret = os.popen('dir') # 执行操作系统命令 并返回结果 # print(ret.read()) # print(os.getcwd()) # 当前python的工作目录#官方用法os.path.dirname(__file__)
# 这个程序是在哪个路径下运行的,当前工作目录就是哪个路径 # open('E:s17day17 est','w').close() # 工作目录 : 你创建文件创建文件夹实际上都是跟着工作目录走的, # 和你当前执行的这个文件并没有关系 # 你在程序中写的所有的相对路径 都是相对工作目录 # 什么是工作目录: 在哪个目录下执行py哪个就是工作目录 # os.chdir('E:s17day17') # 指定工作目录,不管别人如何修改执行文件的位置,这个值总是会成为当前程序的工作目录 # open('test','w').close()
# os.path.*** # print(os.path.abspath('test')) # print(os.path.split(r'E:s17day17 est')) # print(os.path.dirname(r'E:s17day17 est')) # print(os.path.basename(r'E:s17day17 est')) # print(os.path.exists(r'E:s17day17 est1')) # print(os.path.join('E:\','s17','day17')) # listdir('E:s17') # ['day2','day3'] # print(os.path.join('E:s17','day2')) # print(os.path.getsize(r'E:s17day161.内容回顾.py')) # print(os.path.getsize(r'E:s17day162.作业讲解.py')) # print(os.path.getsize(r'E:s17')) # 计算文件夹的大小
# 能不能给你自己的文件当中的所有文件的相对路径拼上一个正确的绝对路径 file_abs = __file__ print(file_abs) dir_name = os.path.dirname(file_abs) print(dir_name) open(os.path.join(dir_name,'test'),'w')
import sys # print(sys.version) # 3.6.6 # print(sys.platform) # win32 # python2/3 兼容的程序 # 不同的操作系统兼容的 # sys.exit(0) # 程序执行完了 你希望它退出 exit() # sys.exit(1) # 程序执行没执行完 报错了 先处理异常exit(1) # print(sys.path) # 安装python的时候 选择路径 # 一个模块能不能被找到,主要是看这个模块文件所在的路径 # 在不在sys.path中 # print(sys.argv) # 一个文件在命令行被执行的时候 # python这句话后面所有的内容都会成为sys.argv中的一项 # user = sys.argv[1] # passwd = sys.argv[2] # if user == 'alex' and passwd == '123': # print('登陆成功') # else: # exit() # print('登陆成功之后才能执行的逻辑')