模块概述
1.一个.py文件就是一个模块
2.通过import语句在一个模块中导入另一个模块,import sys,print (sys.path),sys.path的结果为一个列表,列表的第一个元素为当前模块所在路径,在该模块中导入其他模块时,需要从当前模块所在路径为起点进行路径搜索
3.导入模块时python做了两件事:先将整个要被导入的.py文件、或被导入函数所在的.py文件执行一遍,再将.py文件名、或导入函数的名字导入,后续可直接通过import后面导入的名字进行引用
4.如下图结构所示,
如果a文件要导入b文件:from test import b或者import test.b,后续要引用b文件的函数时,前面必须带上b.或者test.b.
如果a文件要导入b文件中的函数:from test.b import 函数名,后面可直接通过函数名引用b的函数
5.在执行文件中__name__='__main__',在被调用文件中__name__等于相对于sys.path的路径+文件名
例如在上述文件情况下通过a导入b,print(__name__)在a和b中分别显示__main__、test.b
6.__file__表示文件名
import os,os.path.abspath(__file__),返回文件的绝对路径和文件名
os.path.dirname(os.path.abspath(__file__)),返回文件的上一层目录
时间模块import time
python时间的三种表现形式
1.时间戳形式:time.time()表示从1970年1月1日0点到当前时间经历的秒数
2.结构化形式:time.localtime()和time.gmtime(),都返回一个时间对象,两者的区别在于tm_hour的显示,前者是当地时间,后者是世界标准时间
返回结果样例time.struct_time(tm_year=2018, tm_mon=11, tm_mday=12, tm_hour=16, tm_min=31, tm_sec=34, tm_wday=0, tm_yday=316, tm_isdst=0)
取返回值的某一项,time.localtime().tm_yday
3.字符串形式:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
4.三种表现形式的时间之间的转化
时间戳形式和结构化形式之间可以互相转化,结构化形式和字符串形式之间可以互相转化,但时间戳形式和字符串形式之间不能之间转化
时间戳形式→time.localtime()和time.gmtime()→结构化形式,参数可为空(为空表示time.time()),或者一个秒数
两者不加参数默认是将当前时间转化为结构化时间,即time.localtime(time.time()),time.gmtime(time.time())
加参数秒数转化为结构化时间time.localtime(1542028244)
结构化形式→time.mktime()→时间戳形式,一个结构化时间参数
time.mktime(time.localtime())、或者time.mktime(time.gmtime())
结构化形式→time.strftime()→字符串形式,两个参数,第一个为字符串表现格式,第二个为结构化时间
time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()),除月份m、日d,其他都是大写形式,%H:%M:%S时分秒可直接写成%X
当然字符串的表现形式可以自己定义
字符串形式→time.strptime()→结构化形式,两个参数,第一个为字符串时间,第二个为字符串表现格式
time.strptime('2018-11-12 21:00:00','%Y-%m-%d %H:%M:%S')
5.其他形式time.ctime(),time.asctime()
如果参数相同则返回结果完全相同,格式为Mon Nov 12 22:27:56 2018,区别在于time.ctime()默认是将当前时间戳时间转化为此样式的时间,而time.asctime()默认是将当前格式化时间转化为此样式的时间
6.通过import datetime,datetime.datetime.now()可以返回比较直观的字符串形式的时间2018-11-13 09:48:43.819768