定義:html
模塊可把一個複雜的程序按功能分開,分別存放到不一樣的文件中,是程序更容易維護和管理。在python中的模塊是一個以.py結尾的python代碼文件。python
模塊的使用:正則表達式
可經過import命令輸入,import os或import os,syswindows
import會完成如下三個操做:建立新的名稱空間,該名稱空間中輸入模塊中定義的全部對象;執行模塊中的代碼;建立該名稱空間的變量名。數組
只想使用模塊中對象,又不想把整個模塊輸入,則能夠用from...import語句輸入特定對象,from ftplib import FTPsocket
有些模塊的名稱很長,能夠在輸入時給它起個簡單的別名,這樣在使用模塊中的對象就方便不少。import ftplib as ftp函數
幫助:ui
python交互模式下編碼
使用help(模塊名)可查看幫助url
使用dir(模塊名)可看模塊的全部變量及函數
使用help(模塊名.函數名)可看到函數幫助
直接輸入模塊名可看到模塊源代碼的位置
python幫助模式下
輸入modules可看到全部模塊名
輸入模塊.函數可看到函數的幫助
經常使用模塊
1.os模塊(參照另外一篇隨筆"python對文件的處理")
os模塊包裝了不一樣操做系統的通用接口,使用戶在不一樣操做系統下,可使用相同的函數接口,返回相同結構的結果。
os.name:返回當前操做系統名稱(對於Linux或Unix用戶,它是'posix',對於Windows用戶,它是 'nt'。 'os2', 'mac', 'ce' or 'riscos')
os中定義了一組文件、路徑在不一樣操做系統中的表現形式參數,如
os.sep(操做系統特定的路徑分隔符(即文件夾分隔符),windows中是‘ \’,Linux中是‘/’ )
os.extsep(擴展名分隔符,windows中是 . )
os.pathsep(目錄分隔符,windows中是 ; )
os.linesep(換行分隔符,windows中是 \r\n )
os中有大量文件、路徑操做的相關函數,如:
listdir(path):列舉目錄下的全部文件和目錄名
makedir(path):建立文件夾,注:建立已存在的文件夾將異常
makedirs(path):遞歸式的建立文件夾,注:建立已存在的文件夾將異常
remove(filename):刪除一個文件
rmdir(path):刪除一個文件夾,注:刪除非空的文件夾將異常
removedirs(path):遞歸的刪除文件夾,直到有一級的文件夾非空,注:文件夾路徑不能以'\'結束
rename(src,dst):給文件或文件夾更名(能夠改路徑,可是不能覆蓋目標文件)
renames(src,dst):遞歸式的給文件或文件名更名
walk(path):列舉path下的全部文件、文件夾
os中與進程相關的操做,如:
execl(path):運行一個程序來替代當前進程,會阻塞式運行
_exit(n):退出程序
startfile(filename):用與文件關聯的程序運行,關聯程序打開後,當即返回
system(cmd):運行一個程序或命令,會當即返回,並在cmd執行完成後,會返回cmd退出代碼
os.path:在不一樣的操做系統中調用不一樣的模塊,是一個可import的模塊,這個模塊中提供不少有用的操做:
abspath(path):返回path的絕對路徑,若path已是絕對路徑了,則保持。
basename(path):返回path中的文件名。
commonprefix(list):返回list中的統一前綴,用於得到一組字符串的左起相同的內容
dirname(path):返回path中的文件夾部分,結果不包含'\'
exists(path):文件或文件夾是否存在
getatime(path):文件或文件夾的最後訪問時間,重新紀元到訪問時的秒數
getmtime(path):文件或文件夾的最後修改時間
getctime(path):文件或文件夾的建立時間
getsize(path):文件或文件夾的大小,如果文件夾返回0
isabs(path):返回是不是絕對路徑
isfile(path):返回是不是文件路徑
isdir(path):返回是不是文件夾路徑
islink(path):返回是不是快捷方式
join(path1,path2,...):將path進行組合,若其中有絕對路徑,則以前的path將被刪除
normcase(path):轉換路徑中的間隔符
normpath(path):轉換路徑爲系統可識別的路徑
realpath(path):轉換路徑爲絕對路徑
split(path):將路徑分解爲(文件夾,文件名)
splitext(path):將路徑分解爲(其他部分,.擴展名),若文件名中沒有擴展名,擴展名部分爲空字符串 在操做與系統不支持的對象 時,拋出OSError異常。
2.sys模塊(包含系統對應的功能)
系統信息和方法模塊,提供了不少實用的變量和方法:
argv:命令行參數List,第一個元素是程序自己路徑
builtin_module_names:Python解釋器導入的模塊列表
modules.keys():返回全部已經導入的模塊列表
exc_info():獲取當前正在處理的異常類
exc_type、exc_value、exc_traceback:當前處理的異常詳細信息
executable:Python解釋程序路徑
exit(n):退出程序,正常退出時exit(0)
getwindowsversion():獲取Windows的版本
hexversion:獲取Python解釋程序的版本值,16進制格式如:0x020403F0
version:獲取Python解釋程序的版本信息
maxint:最大的Int值
maxunicode:最大的Unicode值
modules:返回系統導入的模塊字段,key是模塊名,value是模塊
path:返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值
platform:返回操做系統平臺名稱
3.built-in內置模塊
eval(expr[,globals[,locals]]):執行一段代碼,並返回結果
exec(expr[,globals[,locals]]):執行一段代碼
execfile(file[,globals[,locals]]):執行一個文件
filter(func,list):使用函數來過濾list,返回知足要求的list元素組
getattr(obj,name[,default]):獲取對象的屬性,若沒有該屬性,則返回默認值
setattr(obj,name,value):設置對象的屬性,若沒有該屬性,則異常
hasattr(obj,name):返回對象是否有指定屬性
input([prompt]):提示控制檯輸入,必須輸入常量或變量,若想直接輸入字符串,須要使用引號括起來
raw_input([prompt]):提示控制檯輸入,直接輸入數字或字符串
open(filename,mode):打開文件,mode能夠爲:w,r,a,若想同時讀寫,則加上+,若想以二進制讀寫,則加上b
reload(module):再次導入已導入過的模塊
type(obj):返回一個對象的類型
zip(seq1,...):將若干個元組進行合併,長度以元組中的最短的爲準
4.time模塊
這個模塊定義的都是和時間、時鐘、計時相關的內容:
clock():返回第一次調用到當前調用時的計時,是以秒爲單位的浮點數
localtime([t]):返回時間的元組,有9個元素(年,月,日,時,分,秒,星期幾,當年的第幾天,是否夏令時),星期一爲0
gmtime(): 格林威治(GMT)時間
ctime():當前時間,是一字符串,顯示星期,月份,日期,時間,年份
mktime(tlist):是localtime的反函數,將一個9元數組轉成一個浮點時間值,後3個元素,系統會本身調整
sleep(n):掛起線程n秒
strftime(fstring[,t]):格式化顯示時間,將元組轉換爲字符串,fstring經常使用關鍵字:
%a,%A:星期的縮寫,全拼
%b,%B:月份的縮寫,全屏
%c,%x,%X:本地默認表示法(日期時間,日期,時間)
%Y(%y:2位),%m,%d,%H,%M,%S:年月日時分秒
%w:星期,0爲星期天
strptime(string[,format]):將字符串解析爲9元素的時間數組
time():返回當前時間值(秒數),浮點數 更高級的用法可使用datetime模塊,建立其中的date,time對象,能夠進行加減操做,得出timedelta對象。
5.re模塊
限定符說明:
".": 匹配任何字符
"^": 匹配開頭
"$": 匹配結尾
"*": 匹配0次或更屢次以前的表達式。貪婪時,匹配儘量屢次
"+": 匹配1次或更屢次以前的表達式。等價於{1,}
"?": 匹配0次或1次以前的表達式。等價於{0,1}
"*?,+?,??": 非貪婪匹配
"{m,n}": 貪婪式匹配以前的表達式m到n次
"{m,n}?": 非貪婪匹配以前的表達式m到n次
"\": 將下一個字符轉義
[ABC]: 指定一個字符集
[^ABC]: 指定一個不在範圍內的字符集
"A|B": 匹配條件A或條件B
(pattern): 匹配括號內的表達式,並做爲匹配項
(?:pattern): 匹配括號內的表達式,但不做爲匹配項
(?#...): 註釋,忽略
(?=pattern): 預查,若以後的內容匹配表達式,則成立
(?!pattern): 預查,若以後的內容不匹配表達式,則成立
(?P<name>pattern): 給一個匹配項命名
(?P=name): 匹配與以前命名的匹配項內容相同的部分
如:s='12a34a56'
re.findall('12(?P<xxx>.).*(?P=xxx)56)', s)
(?P<xxx>.)匹配到a,則(?P=xxx)的內容也必須爲a時才pp
(?iLmsux): 設置I,L,M,S,U,or X標記
轉義符說明:
\A: 匹配開頭
\Z: 匹配結尾
\b: 匹配開頭或結尾的空字符串,一般是指單詞邊界 ???
\B: 匹配非開頭和結尾的空字符串,一般是指非單詞邊界???
\d: 匹配一個數字。等價於[0-9]
\D: 匹配一個非數字。等價於[^0-9]
\s: 匹配一個空白字符。等價於[ \t\n\r\f\v]
\S: 匹配一個非空白字符。等價於[^ \t\n\r\f\v]
\w: 匹配一個字母數字字符。等價於[a-zA-Z0-9_]\W: 匹配一個非字母數字字符。等價於[^a-zA-Z0-9_]
\\: 匹配一個反斜槓
\f: 匹配一個換頁符。等價於\x0C 和 \cL
\n: 匹配一個換行符。等價於\x0A 和 \cJ
\r: 匹配一個回車符。等價於\x0D 和 \cM
\t: 匹配一個製表符。等價於\x09 和 \cI
\v: 匹配一個垂直製表符。等價於\x0B 和 \cK
\xHH: 匹配 HH,其中 HH 爲十六進制轉義值
\uHHHH: 匹配 HHHH,其中 HHHH 是一個用四個十六進制數字表示的Unicode字符
經常使用匹配:
匹配中文字符的正則表達式: [\u4e00-\u9fa5]
匹配雙字節字符(包括漢字在內):[^\x00-\xff]
匹配空行的正則表達式:\n[\s| ]*\r
匹配首尾空格的正則表達式:(^\s*)|(\s*$)
匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配網址URL的正則表達式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*\\?\\S*)?$
匹配賬號是否合法(字母開頭,容許5-16字節,容許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配國內電話號碼:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匹配騰訊QQ號:^[1-9]*[1-9][0-9]*$
模塊使用:
match:
search:
sub: 替換
subn: 替換並返回替換的次數
split: 分隔
findall: 查找全部匹配項
compile:
purge:
escape:
可選參數:
I(IGNORECASE): 忽略大小寫
L(LOCALE): 使用\w,\W,\b,\B時依據本地配置???
M(MULTILINE): 多行,"^"匹配每行的開頭,"$"匹配每行的末尾
S(DOTALL): 使"."匹配包含換行符在內的任意字符
X(VERBOSE): 忽略空白處和註釋內容
U(UNICODE): 使\w,\W,\b,\B依靠UNICODE編碼
6.thread模塊
7.urllib模塊
8.urllib2模塊
9.socket模塊
10.file對象操做
open(文件名,模式,緩衝):模式能夠置爲(r,w,a,r+,w+等),這些模式自己不會去鎖定文件,在同時使用讀和寫時,要使用seek來移動位置。
close():關閉的做用是置位closed,屢次關閉不會引起異常。
flush():將內在緩衝的內容寫入文件。
read(n):讀入若干字節,無n時,讀入所有。
readline(n):讀入若干行,n表示讀入的最長字節數。
seek(offset,where):where=0從起始位置移動,1從當前位置移動,2從結束位置移動。
tell():文件的當前位置。
truncate(n):截斷文件爲n個字符,無n表示從當前位置起截斷。
write(str):在當前位置寫入字符串。
writelines(lines):至關於給lines中的每一個字符串調用write函數。
11.其它模塊
filecmp.cmp(file1,file2):比較file1和file2的內容是否相同
dircmp:能夠構造一個比較兩個目錄內容的對象,較強
getpass.getpass(prompt):讓用戶在控制檯輸入不顯示的密碼
getopt.getopt(args,opti*****[,long_opti*****]):用於解析運行參數
shutil.copy(file1,file2):將文件1複製到file