在Python中,一個.py文件就稱之爲一個模塊(Module)python
被導入的模塊,需與當前文件處於同一個文件夾下,纔可以使用相對路徑導入,不然報錯正則表達式
(sys.path存儲了當前文件的路徑以及標準庫模塊的路徑)shell
import
module1[, module2[,... moduleN]
import testbash
實質是:先獲得test------>與path中的環境變量組成一個絕對路徑------>導入文件內容------>執行文件所有內容dom
from
modname
import
name1[, name2[, ... nameN]]
from test import add函數
從模塊中導入部分函數spa
from dict1 import test操作系統
從文件夾dict1中導入test.py文件命令行
實質是:先獲得dict1\test.py------>與path中的環境變量組成一個絕對路徑------>導入文件內容------>執行文件所有內容code
from
modname
import
*
導入模塊中全部函數,但須注意,導入的函數若是和當前文件中的函數有重名現象,其中一個會被覆蓋掉,先定義的被覆蓋掉
請注意,每個包目錄下面都會有一個__init__.py
的文件,這個文件是必須存在的,不然,Python就把這個目錄當成普通目錄(文件夾),而不是一個包。
__init__.py
能夠是空文件,也能夠有Python代碼,由於__init__.py
自己就是一個模塊,而它的模塊名就是對應包的名字
調用包就是執行包下的__init__.py文件
import time time.time() #時間戳1473525444.037215 time.localtime() #struct_time gmtime() #將一個時間戳轉換爲UTC時區(0時區)的struct_time
random.random()
#(0,1)----float
random.randint(
1
,
3
)
#[1,3]----int
random.randrange(
1
,
3
)
#[1,3)
random.choice([
1
,
'23'
,[
4
,
5
]])
#N選一
random.sample([
1
,
'23'
,[
4
,
5
]],
2
)
#N選二
random.uniform(
1
,
3
)
#1和3之間浮點型數據
#練習~四位驗證碼 import random def aaa(): rec='' for i in range(4): a=random.randint(0,9) b=chr(random.randint(65,90)) c=chr(random.randint(97,122)) rec+=str(random.choice([a,b,c])) print(rec) aaa()
os.getcwd() 獲取當前工做目錄,即當前python腳本工做的目錄路徑 os.chdir("dirname") 改變當前腳本工做目錄;至關於shell下cd os.curdir 返回當前目錄: ('.') os.pardir 獲取當前目錄的父目錄字符串名:('..') os.makedirs('dirname1/dirname2') 可生成多層遞歸目錄 os.removedirs('dirname1') 若目錄爲空,則刪除,並遞歸到上一級目錄,如若也爲空,則刪除,依此類推 os.mkdir('dirname') 生成單級目錄;至關於shell中mkdir dirname os.rmdir('dirname') 刪除單級空目錄,若目錄不爲空則沒法刪除,報錯;至關於shell中rmdir dirname os.listdir('dirname') 列出指定目錄下的全部文件和子目錄,包括隱藏文件,並以列表方式打印 os.remove() 刪除一個文件 os.rename("oldname","newname") 重命名文件/目錄 os.stat('path/filename') 獲取文件/目錄信息 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命令,直接顯示 os.environ 獲取系統環境變量
os.path.abspath(path) 返回path規範化的絕對路徑 os.path.split(path) 將path分割成目錄和文件名二元組返回 os.path.dirname(path) 返回path的目錄。其實就是os.path.split(path)的第一個元素 os.path.basename(path) 返回path最後的文件名。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素 os.path.exists(path) 若是path存在,返回True;若是path不存在,返回False os.path.isabs(path) 若是path是絕對路徑,返回True os.path.isfile(path) 若是path是一個存在的文件,返回True。不然返回False os.path.isdir(path) 若是path是一個存在的目錄,則返回True。不然返回False os.path.join(path1[, path2[, ...]]) 將多個路徑組合後返回,第一個絕對路徑以前的參數將被忽略 os.path.getatime(path) 返回path所指向的文件或者目錄的最後存取時間 os.path.getmtime(path) 返回path所指向的文件或者目錄的最後修改時間
sys.argv 命令行參數
List
,第一個元素是程序自己路徑
sys.exit(n) 退出程序,正常退出時exit(
0
)
sys.version 獲取Python解釋程序的版本信息
sys.maxint 最大的
Int
值
sys.path 返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值
sys.platform 返回操做系統平臺名稱
#進度條 import sys,time for i in range(10): sys.stdout.write('#') time.sleep(1) sys.stdout.flush()
. 匹配任意字符,除了換行符
^ 匹配字符串的開頭
$ 匹配字符串的末尾
* 匹配0個或多個的表達式
+ 匹配1個或多個的表達式
? 轉爲非貪婪模式
e{ n} 匹配n個前面表達式
e{ n,} 匹配n或無窮個前面表達式
e{ n, m} 匹配n到m個前面表達式
| 或
\w 匹配數字字母下劃線
\W 匹配非數字字母下劃線
\s 匹配任意空白字符,等價於 [\t\n\r\f]
\S 匹配任意非空字符
\d 匹配任意數字
\D 匹配任意非數字
\b 匹配一個單詞邊界,也就是指單詞和空格間的位置
import re ret=re.findall('c\l','abc\le') print(ret) #[] ret=re.findall('c\\l','abc\le') print(ret) #[] ret=re.findall('c\\\\l','abc\le') print(ret) #['c\\l'] ret=re.findall(r'c\\l','abc\le') print(ret) #['c\\l']
由於表達式爲'c\\\\l'時,先傳給python解釋器,解釋器獲得‘c\\l’,再將‘c\\l’傳給re解釋器,解釋器獲得‘c\l’
r'c\\l'表示傳給re解釋器的就是‘c\\l’
ret=re.search('(?P<id>\d{2})/(?P<name>\w{3})','23/com') print(ret.group()) #23/com print(ret.group('id')) #23
findall( ) 返回全部知足匹配條件的結果,放在列表裏
search( ) 在字符串內查找匹配,只找到第一個匹配的對象,該對象可
以
經過調用group()方法獲得匹配的字符串,若是字符串沒有匹配,則返回None
match( ) 同search,但只在字符串開始處進行匹配
split('[ab]','abcd') 先按'a'分割獲得''和'bcd',在對''和'bcd'分別按'b'分割
aaa=re.split('[ab]','abdfeaabcc') print(aaa) #['','','dfe','','','cc']
sub('\d','aaa','sgee43jisg55',2) 將字符串中的數字替換爲aaa,且替換2次 #sgeeaaaaaajisg55
compile函數:
用於編輯正則表達式,生成一個正則表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用
pattern = re.compile(r'\d+') #將正則表達式賦值給變量,方便後續重複使用 m = pattern.match('one12twothree34four') m = pattern.match('one123456786666e34four', 2, 10) # 從‘e’的位置開始匹配匹配到8結束,沒有匹配 m=pattern.match('sds128545585sgegsgegw',3,6) #從1匹配到8 #<_sre.SRE_Match object; span=<3,6>,match='128'>
finditer() 字符串中找到正則表達式所匹配的全部子串,並把它們做爲一個迭代器返回
import re it = re.finditer(r"\d+","12a32bc43jf3") for match in it: print (match.group() ) #12 #32 #43 #3