python笔记6 模块与包 程序开发规范 包 re sys time os模块
模塊與包
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 wkwk
__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('\w\w',ss)) print(re.findall('\w\w\w',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('\W\W',ss)) print(re.findall('\W\W\W',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從字符串開頭匹配,只匹配開頭 \b匹配結尾
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匹配字符串的結束,如果是換行,只匹配到換行前的結果
\Z匹配字符串的結束
import re ss = 'a4a s132* d#a 1!w\n 132131' print(re.findall(r'131\Z',ss))['131']
$匹配以什么結尾
import re ss = 'a4a s132* d\t#a 1!w\n 132131' print(re.findall(r'131$',ss))['131']
\n匹配一個換行符
import re ss = 'a4a s132* d#a 1!w\n 132131' print(re.findall(r'\n',ss))['\n']
\t匹配一個制表符
import re ss = 'a4a s132* d\t#a 1!w\n 13213\t1' print(re.findall(r'\t',ss))['\t', '\t']
重復匹配
.點代表匹配任意一單個字符,匹配換行符需要加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\nb' print(re.findall('a.b',ss,re.DOTALL)) #可匹配換行符['a2b', 'awb', 'aqb', 'a*b', 'a\nb']
?問好匹配0個或者1個由左邊字符定義的片段
import re ss = 'abb aab aeqeb aqbada a*b a\nb' 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 recc = re.search(r'\d+',"asddas112.adasd243") print(cc) #得到的數據必須分組才能顯示 print(cc.group()) <_sre.SRE_Match object; span=(6, 9), match='112'> 112
import recc = 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 ress = 'adwk,cxdfwk%adawk|wkggg' print(re.split(',|%|\|', ss))['adwk', 'cxdfwk', 'adawk', 'wkggg']
sub替換
import ress = '你大哥就是你大哥,你大爺也是你大爺' print(re.sub('你','我',ss)) #把你替換為我我大哥就是我大哥,我大爺也是我大爺
import ress = '你是傻B' print(re.sub('(你)(是)(傻)(B)',r'\3\4\2\1', ss))傻B是你
compile 制作一個規則
import re obj = re.compile('\d{2}') ss = 'asd323fsgddfgfhgf' print(obj.findall(ss))['32']
finditer
import ress = '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 sysprint(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\練習\bbb
os.curdir和os.pardir 返回當前目錄和返回上級
import osprint(os.curdir) print(os.pardir). ..
文件夾相關
os.makedirs 遞歸創建文件夾
import osos.makedirs('文件夾1/文件夾2/文件夾3/文件夾4')
os.removedirs 遞歸刪除空目錄,目錄里有文件則不刪除
import osos.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下為"\t\n",Linux下為"\n" 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 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:16:3e:2e:cf:16 brd ff:ff:ff:ff:ff:ffinet 172.17.191.14/20 brd 172.17.191.255 scope global dynamic eth0valid_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\n link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n inet 127.0.0.1/8 scope host lo\n valid_lft forever preferred_lft forever\n2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000\n link/ether 00:16:3e:2e:cf:16 brd ff:ff:ff:ff:ff:ff\n inet 172.17.191.14/20 brd 172.17.191.255 scope global dynamic eth0\n valid_lft 314754436sec preferred_lft 314754436sec\n'
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
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
? ?
?
轉載于:https://www.cnblogs.com/ywrj/p/10211206.html
總結
以上是生活随笔為你收集整理的python笔记6 模块与包 程序开发规范 包 re sys time os模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求炸开头的成语接龙!
- 下一篇: Oracl 12c (课本)