模块与包
python 模块首引用加载到内存,如果再次引用此模块,直接从内存中读取.
python文件分为:执行文件(解释器运行的文件),被引用文件(import)
模块引用一共发生了3件事:
1.他在内存中开辟了以模块名命名的内存空间
2.你模块文件的所有内容都加载到了内存.
3.通过模块名.的方式去引用模块中的对象
为模块起别名:
1,将模块名较长的改为较短的,便于操作
import time as tm tm.time()
2.拓展代码
from .... import .... 方式引用 #好处:使用方便 缺点:可能与执行稳健的变量名产生冲突 所以不太推荐使用
from time import time #从from模块引用time()函数 print(time()) #这样引用可以直接使用time函数,前边不用加time. 1546415379.0057561
改名
from time import time as tm print(tm()) 1546415633.2531772
__name__
__name__被当做执行文件执行时__name__ 为__main__ ,被引用时 __name__为模块名
执行模块wk
name = 'wk' def read1(): print('tbjx模型', name) def read2(): print('嘻嘻') read1() print(__name__) __main__
在其他文件引用模块wk
import wk wk
__name__用于调试模块
name = 'wk' def read1(): print('tbjx模型', name) def read2(): print('嘻嘻') read1() print(__name__) if __name__ == '__main__': #如果说执行的是本文件,__name__就是__main__ ,判断后就能调用函数,如果是import调用的__name__就是函数名,不会调用函数 read2()
模块的引用顺序
1.先从内存中找
2.内置模块(os,time,sys..)
3.sys.path
程序开发规范
包
创建一个包里边直接有__init__文件
asd文件里的内容
x = 1
引用aaa包里的asd文件
from aaa import asd print(asd.x) 1
引用aaa包直接执行__init__内的内容
from aaa import asd print(asd.x) 321 1
引用aaa包内的bbb包
bbb的__init__文件
xx = 32
aaa的__init__文件
from aaa import bbb
aaa同级文件引用aaa里的bbb
import aaa print(aaa.bbb.xx) 32
引用bbb里的ddd文件
ddd文件
def fun1(): print('bbb里的ddd')
bbb的__init__文件
from aaa.bbb import ddd
aaa的__init__文件
from aaa import bbb
aaa同级的python调用文件
import aaa
aaa.bbb.ddd.fun1()
bbb里的ddd
总结:
执行文件的当前目录是在sys.path的第一个参数
所以当前目录的文件可以直接improt
无论怎样导入文件import还是from...import.... 一定是从执行文件当前目录开始
模块的分发
在aa包下有asd 和qwe两个文件4个函数qq ww aa xx
asd文件
def xx(): print(1) def aa(): print(2)
qwe
def qq(): print(3) def ww(): print(4)
aaa下的__init__文件
from aaa.asd import aa #在aaa里的asd文件调用aa函数 .只能用在前不能用在import之后 from aaa.asd import xx from .qwe import ww #.就是当前路径 当前目录下的qwe文件 ..是上级目录和linux一样 from .qwe import qq
aaa的同级调用文件
import aaa #在不改变原调用方法的情况下 将相同功能的模块分开为不同的文件
aaa.ww()
aaa.qq()
aaa.aa()
aaa.xx()
4
3
2
1
re模块
re模块的操作方法:
findall 找全部
search 找到即返回
match 匹配开始
split 按照不同分隔符进行分割
sub 替换
finditer返回一个存放匹配结果的迭代器
单个匹配
w匹配字母(包含中文)或数字或下划线
import re ss = 'aasdsadaqw' print(re.findall('w',ss)) #一个w代表一个字符 print(re.findall('ww',ss)) print(re.findall('www',ss)) ['a', 'a', 's', 'd', 's', 'a', 'd', 'a', 'q', 'w'] ['aa', 'sd', 'sa', 'da', 'qw'] ['aas', 'dsa', 'daq']
W匹配非字母(包含中文)或数字或下划线
import re ss = 'aa sds* d#a q!w' print(re.findall('W',ss)) print(re.findall('WW',ss)) print(re.findall('WWW',ss)) [' ', ' ', '*', ' ', '#', ' ', '!'] [' ', '* '] [] #没有3个连在一起的
s匹配任意的空白符
import re ss = 'aa sds* d#a q!w' print(re.findall('s',ss))
[' ', ' ', ' ', ' ']
S匹配任意的非空白符
import re ss = 'aa sds* d#a q!w' print(re.findall('S',ss)) ['a', 'a', 's', 'd', 's', '*', 'd', '#', 'a', 'q', '!', 'w']
d 匹配数字
import re ss = 'a4a s132* d#a 1!w' print(re.findall('d',ss)) ['4', '1', '3', '2', '1']
D匹配非数字
import re ss = 'a4a s132* d#a 1!w' print(re.findall('D',ss)) ['a', 'a', ' ', ' ', 's', '*', ' ', 'd', '#', 'a', ' ', '!', 'w']
A从字符串开头匹配,只匹配开头 匹配结尾
import re ss = 'a4a s132* d#a 1!w' print(re.findall(r'Aa',ss)) #匹配开头字母,如果开头不是所匹配的返回结果为空 ['a']
import re ss = 'a4a s132* d#a 1!w' print(re.findall(r'As',ss)) []
^和A一样
import re ss = 'a4a s132* d#a 1!w' print(re.findall(r'^a',ss)) ['a']
z匹配字符串的结束,如果是换行,只匹配到换行前的结果
匹配字符串的结束
import re ss = 'a4a s132* d#a 1!w 132131' print(re.findall(r'131',ss)) ['131']
$匹配以什么结尾
import re ss = 'a4a s132* d #a 1!w 132131' print(re.findall(r'131$',ss)) ['131']
匹配一个换行符
import re ss = 'a4a s132* d#a 1!w 132131' print(re.findall(r' ',ss)) [' ']
匹配一个制表符
import re ss = 'a4a s132* d #a 1!w 13213 1' print(re.findall(r' ',ss)) [' ', ' ']
重复匹配
.点代表匹配任意一单个字符,匹配换行符需要加re.DOTALL
import re ss = 'a2b awb aeqeb aqbada a*b' print(re.findall('a.b',ss)) #a.b取出以a开头b结尾的3个字符,只能是3个 ['a2b', 'awb', 'aqb', 'a*b']
import re ss = 'a2b awb aeqeb aqbada a*b a b' print(re.findall('a.b',ss,re.DOTALL)) #可匹配换行符 ['a2b', 'awb', 'aqb', 'a*b', 'a b']
?问好匹配0个或者1个由左边字符定义的片段
import re ss = 'abb aab aeqeb aqbada a*b a b' print(re.findall('a?b',ss)) #?匹配左边的0个或1个a 右边是b 期结果为 两种匹配一个为 ab 匹配0个为 b ['ab', 'b', 'ab', 'b', 'b', 'b', 'b']
*匹配0到多个左边的字符
import re ss = 'abb aab aeqeb aqbada a*b aaaaaab' print(re.findall('a*b',ss)) ['ab', 'b', 'aab', 'b', 'b', 'b', 'aaaaaab']
.*匹配任意所有字符
import re ss = 'abb aab aeqeb aqbada a*b aaaaaab' print(re.findall('a.*b',ss)) ['abb aab aeqeb aqbada a*b aaaaaab']
.*? 带限制的匹配 .*匹配任意 ?做限制,匹配到即停止
import re ss = 'abb aab aeqeb aqbada a*b aabaab' print(re.findall('a.*b',ss)) ['ab', 'aab', 'aeqeb', 'aqb', 'ada a*b', 'aab', 'aab']
+匹配一个或多个左边的字符
import re ss = 'abb aab aeqeb aqbada a*b aabaab' print(re.findall('a+b',ss)) ['ab', 'aab', 'aab', 'aab']
{x,y} 匹配x到y个左边字符
import re ss = 'abb aab aeqeb aqbada a*b aaaaab' print(re.findall('a{1,3}b',ss)) ['ab', 'aab', 'aaab']
[ ]代表一个字符
import re ss = 'asd awd acvd awwd acd' print(re.findall('a[swc]d',ss)) ['asd', 'awd', 'acd']
import re ss = 'asd awd acvd awwd acd' print(re.findall('a[swc][swc]d',ss)) ['awwd']
import re ss = 'asd awd acvd awwd acd' print(re.findall('a[a-z]d',ss)) #[]中间可以写范围A-Z a-z 0-9 ['asd', 'awd', 'acd']
import re ss = 'a-d a/d acvd awwd a*d' print(re.findall('a[-/*]d',ss)) #匹配- 不能把-放中间 ['a-d', 'a/d', 'a*d']
import re ss = 'a1d a2d acvd awwd a*d' print(re.findall('a[^0-9]d',ss)) #^取反 ['a*d']
()分组 相当于sed的反向引用
import re ss = 'asdwk cxdfwk adawk 232wk' print(re.findall('(.*?)wk',ss)) ['asd', ' cxdf', ' ada', ' 232']
import re ss = 'asdwk cxdfwk adawk 232wk' print(re.findall('(sd|df|ds|da)',ss)) ['sd', 'df', 'da']
import re ss = 'asdwk cxdfwk adawk 232wk' print(re.findall('(cxdf|ada)wk',ss)) ['cxdf', 'ada'] import re ss = 'asdwk cxdfwk adawk 232wk' print(re.findall('(?:cxdf|ada)wk',ss)) # ?: 取匹配到的分组的所有字符 ['cxdfwk', 'adawk']
search 匹配到即返回,没有返回 None
import re cc = re.search(r'd+',"asddas112.adasd243") print(cc) #得到的数据必须分组才能显示 print(cc.group()) <_sre.SRE_Match object; span=(6, 9), match='112'> 112
import re cc = re.search(r'd+',"asddas.adasd") print(cc) #如果为空返回None #print(cc.group()) #此时不能分组 分组则报错 None
match 匹配开始
import re ss = 'asdwk cxdfwk adawk 232wk' print(re.match('as',ss).group()) print(re.match('as',ss)) print(re.match('aa',ss)) #可用于判断是否适宜某字符串开头
as
<_sre.SRE_Match object; span=(0, 2), match='as'>
None
split按照不同分隔符进行分割
import re ss = 'adwk,cxdfwk%adawk|wkggg' print(re.split(',|%||', ss)) ['adwk', 'cxdfwk', 'adawk', 'wkggg']
sub替换
import re ss = '你大哥就是你大哥,你大爷也是你大爷' print(re.sub('你','我',ss)) #把你替换为我 我大哥就是我大哥,我大爷也是我大爷
import re ss = '你是傻B' print(re.sub('(你)(是)(傻)(B)',r'3421', ss)) 傻B是你
compile 制作一个规则
import re obj = re.compile('d{2}') ss = 'asd323fsgddfgfhgf' print(obj.findall(ss)) ['32']
finditer
import re ss = 'asd3231212sg11441451gf' sc = re.finditer('d',ss) print(sc) print(next(sc).group()) print([i.group() for i in sc]) <callable_iterator object at 0x000002A0F852A080> 3 ['2', '3', '1', '2', '1', '2', '1', '1', '4', '4', '1', '4', '5', '1']
爬虫
分组取值
import re cc = '<div>电影名:白蛇缘起下载地址:www.baidu.com</div>' it = re.finditer(r'<div>电影名:(?P<name>.*?)下载地址:(?P<url>.*?)</div>',cc) print(it) for i in it: print(i.group('name')) #通过组的名字获取到数据 print(i.group('url'))
爬取电影天堂 海王电影
import re from urllib.request import urlopen # 引用urllib 模块 # 打开网页获取源代码内容 c = urlopen('https://www.dytt8.net/html/gndy/dyzz/20190126/58116.html').read().decode('gbk') # 写正则 re.S控制正则中的点,可以匹配换行了 obj = re.compile(r'<div id="Zoom">.*?◎片 名(?P<name>.*?)<br />◎年 代(?P<year>.*?)<br />.*?◎导 演(?P<dy>.*?)<br />.*?<td style="WORD-WRAP: break-word" bgcolor="#fdfddf"><a href="(?P<xiaz>.*?)"', re.S) # 匹配网页内容 it = obj.finditer(c) for i in it: print('电影名:', i.group('name'), '年代:', i.group('year'), '导演:', i.group('dy'), '下载链接:', i.group('xiaz')) 电影名: Aquaman 年代: 2018 导演: 温子仁 James Wan 下载链接: ftp://ygdy8:ygdy8@yg45.dydytt.net:8382/阳光电影www.ygdy8.com.海王.HD.720p.韩版英语中字.mkv
sys模块
sys模块是与python解释器交互的一个接口
import sys print(sys.argv) # 命令行参数,第一个元素是程序本身的路径 print(sys.version) # 查看 python的版本信息 print(sys.path) # 查看模块的搜索路径,初始化时使用pythonpath环境变量的值 print(sys.platform) # 返回平台操作系统名称 print(sys.exit()) # 退出程序 ['F:/python24期/L007-老男孩教育-Python24期VIP视频-mp4/练习/111.py'] 3.6.7 (v3.6.7:6ec5cf24b7, Oct 20 2018, 13:35:33) [MSC v.1900 64 bit (AMD64)] ['F:\python24期\L007-老男孩教育-Python24期VIP视频-mp4\练习', 'F:\python24期', 'C:\Python36\python36.zip', 'C:\Python36\DLLs', 'C:\Python36\lib', 'C:\Python36', 'C:\Python36\lib\site-packages'] win32
import sys print(sys.modules) #解释器自动加载到内存的额模块与包 {'builtins': <module 'builtins' (built-in)>, 'sys': <module 'sys' (built-in)>, '_frozen_importlib': <module 'importlib._bootstrap' (frozen)>, '_imp': <module '_imp' (built-in)>, '_warnings': <module '_warnings' (built-in)>, '_thread': <module '_thread' (built-in)>, '_weakref': <module '_weakref' (built-in)>, '_frozen_importlib_external': <module 'importlib._bootstrap_external' (frozen)>, '_io': <module 'io' (built-in)>, 'marshal': <module 'marshal' (built-in)>, 'nt': <module 'nt' (built-in)>, 'winreg': <module 'winreg' (built-in)>, 'zipimport': <module 'zipimport' (built-in)>, 'encodings': <module 'encodings' from 'C:\Python36\lib\encodings\__init__.py'>, 'codecs': <module 'codecs' from 'C:\Python36\lib\codecs.py'>, '_codecs': <module '_codecs' (built-in)>, 'encodings.aliases': <module 'encodings.aliases' from 'C:\Python36\lib\encodings\aliases.py'>, 'encodings.utf_8': <module 'encodings.utf_8' from 'C:\Python36\lib\encodings\utf_8.py'>, '_signal': <module '_signal' (built-in)>, '__main__': <module '__main__' from 'F:/python24期/L007-老男孩教育-Python24期VIP视频-mp4/练习/111.py'>, 'encodings.latin_1': <module 'encodings.latin_1' from 'C:\Python36\lib\encodings\latin_1.py'>, 'io': <module 'io' from 'C:\Python36\lib\io.py'>, 'abc': <module 'abc' from 'C:\Python36\lib\abc.py'>, '_weakrefset': <module '_weakrefset' from 'C:\Python36\lib\_weakrefset.py'>, 'site': <module 'site' from 'C:\Python36\lib\site.py'>, 'os': <module 'os' from 'C:\Python36\lib\os.py'>, 'errno': <module 'errno' (built-in)>, 'stat': <module 'stat' from 'C:\Python36\lib\stat.py'>, '_stat': <module '_stat' (built-in)>, 'ntpath': <module 'ntpath' from 'C:\Python36\lib\ntpath.py'>, 'genericpath': <module 'genericpath' from 'C:\Python36\lib\genericpath.py'>, 'os.path': <module 'ntpath' from 'C:\Python36\lib\ntpath.py'>, '_collections_abc': <module '_collections_abc' from 'C:\Python36\lib\_collections_abc.py'>, '_sitebuiltins': <module '_sitebuiltins' from 'C:\Python36\lib\_sitebuiltins.py'>, 'sysconfig': <module 'sysconfig' from 'C:\Python36\lib\sysconfig.py'>, '_bootlocale': <module '_bootlocale' from 'C:\Python36\lib\_bootlocale.py'>, '_locale': <module '_locale' (built-in)>, 'encodings.gbk': <module 'encodings.gbk' from 'C:\Python36\lib\encodings\gbk.py'>, '_codecs_cn': <module '_codecs_cn' (built-in)>, '_multibytecodec': <module '_multibytecodec' (built-in)>, 'types': <module 'types' from 'C:\Python36\lib\types.py'>, 'functools': <module 'functools' from 'C:\Python36\lib\functools.py'>, '_functools': <module '_functools' (built-in)>, 'collections': <module 'collections' from 'C:\Python36\lib\collections\__init__.py'>, 'operator': <module 'operator' from 'C:\Python36\lib\operator.py'>, '_operator': <module '_operator' (built-in)>, 'keyword': <module 'keyword' from 'C:\Python36\lib\keyword.py'>, 'heapq': <module 'heapq' from 'C:\Python36\lib\heapq.py'>, '_heapq': <module '_heapq' (built-in)>, 'itertools': <module 'itertools' (built-in)>, 'reprlib': <module 'reprlib' from 'C:\Python36\lib\reprlib.py'>, '_collections': <module '_collections' (built-in)>, 'weakref': <module 'weakref' from 'C:\Python36\lib\weakref.py'>, 'collections.abc': <module 'collections.abc' from 'C:\Python36\lib\collections\abc.py'>, 'importlib': <module 'importlib' from 'C:\Python36\lib\importlib\__init__.py'>, 'importlib._bootstrap': <module 'importlib._bootstrap' (frozen)>, 'importlib._bootstrap_external': <module 'importlib._bootstrap_external' (frozen)>, 'warnings': <module 'warnings' from 'C:\Python36\lib\warnings.py'>, 'importlib.util': <module 'importlib.util' from 'C:\Python36\lib\importlib\util.py'>, 'importlib.abc': <module 'importlib.abc' from 'C:\Python36\lib\importlib\abc.py'>, 'importlib.machinery': <module 'importlib.machinery' from 'C:\Python36\lib\importlib\machinery.py'>, 'contextlib': <module 'contextlib' from 'C:\Python36\lib\contextlib.py'>, 'mpl_toolkits': <module 'mpl_toolkits' (namespace)>}
通过sys模块给脚本传参
import sys print(sys.argv[0]) #第0个参数为脚本的绝对路径 # print(sys.argv[1]) #第1个参数 # print(sys.argv[2]) #第2个参数 # print(sys.argv[3]) #第3个参数 F:/python24期/python/ceshi.py
引用模块路径
import sys sys.path.insert(0,'模块路径') #在环境变量列表里的开头插入,一个路径,再引用该模块 就可以找到该模块了
os模块
路径相关
os.getcwd获取当前工作目录的绝对路径
import os print(os.getcwd()) #获取当前工作目录的绝对路径 F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习
os.chdir 改变当前脚本的工作目录,相当于shell的cd
import os os.chdir('bbb') #切换到bbb目录 print(os.getcwd()) F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习bb
os.curdir和os.pardir 返回当前目录和返回上级
import os print(os.curdir) print(os.pardir) . ..
文件夹相关
os.makedirs 递归创建文件夹
import os os.makedirs('文件夹1/文件夹2/文件夹3/文件夹4')
os.removedirs 递归删除空目录,目录里有文件则不删除
import os os.removedirs('文件夹1/文件夹2/文件夹3/文件夹4')
os.mkdir和rmdir 创建单个文件夹和删除单个空文件夹,如果文件夹非空则报错
import os os.mkdir('a') os.rmdir('a')
os.listdir列表出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
import os print(os.listdir('aaa')) ['asd.py', 'qwe.py', '__init__.py', '__pycache__']
和文件相关
os.remove删除一个文件
import os os.remove('5.dpt')
os.rename重命名一个文件
import os os.rename('4.dpt', '4.jpg') #把4.dpt改为4.jpg
os.stat 获取文件或目录的信息
import os print(os.stat('4.jpg')) os.stat_result(st_mode=33206, st_ino=1125899906853556, st_dev=3560956539, st_nlink=1, st_uid=0, st_gid=0, st_size=614400, st_atime=1546487602, st_mtime=1546487184, st_ctime=1546487602)
import os print(os.stat('H:pycham脚本')) print(os.stat('H:pycham脚本').st_ctime) #加点获取特定的参数 print(os.stat('H:pycham脚本').st_mode) os.stat_result(st_mode=16895, st_ino=281474976726620, st_dev=597103, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1549081418, st_mtime=1549081418, st_ctime=1548995764) 1548995764.8935523 16895
和操作系统相关
os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为"/" os.linesep 输出当前平台使用的行终止符,win下为" ",Linux下为" " os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为: os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
和执行系统命令相关
os.system("bash command") 运行shell命令,直接显示 #执行windows命令会乱码
os.system("ip a") 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:16:3e:2e:cf:16 brd ff:ff:ff:ff:ff:ff inet 172.17.191.14/20 brd 172.17.191.255 scope global dynamic eth0 valid_lft 314754627sec preferred_lft 314754627sec
os.popen("bash command).read() 运行shell命令,获取执行结果
os.popen('ip a').read() '1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:16:3e:2e:cf:16 brd ff:ff:ff:ff:ff:ff inet 172.17.191.14/20 brd 172.17.191.255 scope global dynamic eth0 valid_lft 314754436sec preferred_lft 314754436sec '
os.environ 获取系统环境变量
import os print(os.environ)
path系列,和路径相关
os.path.abspath() 返回path规范化的绝对路径
import os print(os.path.abspath('111')) F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习111
os.path.split(path) 将path分割成目录和文件名 元组返回
import os print(os.path.split(__file__)) ('F:/python24期/L007-老男孩教育-Python24期VIP视频-mp4/练习', '111.py')
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
import os print(os.path.dirname(__file__))
F:/python24期/L007-老男孩教育-Python24期VIP视频-mp4/练习
import os print(os.path.dirname(r'F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习111')) F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习
os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值,即os.path.split(path)的第二个元素
import os print(os.path.basename(__file__)) 111.py
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False (path到目录不到文件名)
import os print(os.path.exists(r'F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习')) True
os.path.isabs(path) 如果path是绝对路径,返回True
import os print(os.path.isabs(r'F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习')) True
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
import os print(os.path.isfile(r'F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习')) print(os.path.isfile(r'F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习111.py')) False True
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
import os print(os.path.isdir(r'F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习')) print(os.path.isdir(r'F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习111.py')) True False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
import os print(os.path.join(r'F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习','4.jpg')) F:python24期L007-老男孩教育-Python24期VIP视频-mp4练习4.jpg
os.sep 当前系统的分隔符
import os print(os.sep)
os.path.splitext(文件名)[0] 获取不带文件扩展名的文件名
import os print(os.path.splitext(aaa.html)[0]) aaa
time模块
格林威治时间timestamp
import time print(time.time()) 1546595718.9566987
格式化时间Format String
import time print(time.strftime('%Y-%m-%d')) print(time.strftime("%Y-%m-%d %H-%M-%S")) 2019-01-04 2019-01-04 17-58-10
%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 当前时区的名称 %% %号本身
import time print(time.strftime("%Y{}%m{}%d{} %H:%M:%S").format('年', '月', '日')) 2019年01月04日 18:01:07
结构化时间struct_time
import time print(time.localtime()) time.struct_time(tm_year=2019, tm_mon=1, tm_mday=4, tm_hour=18, tm_min=2, tm_sec=11, tm_wday=4, tm_yday=4, tm_isdst=0)
索引(Index) | 属性(Attribute) | 值(Values) |
---|---|---|
0 | tm_year(年) | 比如2011 |
1 | tm_mon(月) | 1 - 12 |
2 | tm_mday(日) | 1 - 31 |
3 | tm_hour(时) | 0 - 23 |
4 | tm_min(分) | 0 - 59 |
5 | tm_sec(秒) | 0 - 60 |
6 | tm_wday(weekday) | 0 - 6(0表示周一) |
7 | tm_yday(一年中的第几天) | 1 - 366 |
8 | tm_isdst(是否是夏令时) | 默认为0 |
几种时间格式之间的转化
格式化时间Format String ----> 结构化时间struct_time
import time ft = time.strftime('%Y/%m/%d %H:%M:%S') st = time.strptime(ft,'%Y/%m/%d %H:%M:%S') print(st)
结构化时间struct_time ---> 时间戳timestamp
t = time.mktime(st) print(t)
1546596547.0
时间戳timestamp ----> 结构化时间struct_time
import time t = time.time() st = time.localtime(t) print(st) time.struct_time(tm_year=2019, tm_mon=1, tm_mday=4, tm_hour=18, tm_min=10, tm_sec=20, tm_wday=4, tm_yday=4, tm_isdst=0)
结构化时间struct_time ---> 格式化时间struct_time
ft = time.strftime('%Y/%m/%d %H:%M:%S',st) print(ft) 2019/01/04 18:11:04