想做Python開發,這14種常用Python模組,你需知道的幾大模組!
一、模組介紹
1. 定義:
模組:本質就是.py結尾的python檔案(檔名:test.py,對應的模組名:test)
用來從邏輯上組織python程式碼(變數,函式,類,邏輯:實現一個功能)
更多幹貨分享加python程式語言學習QQ群 515267276
2. 語法:
import 語句
當直譯器遇到import語句,如果模組在當前的搜尋路徑就會被匯入。搜尋路徑是一個直譯器會先進行搜尋的所有目錄的列表。
匯入模組:
呼叫符號:
From…import 語句
Python的from語句讓你從模組中匯入一個指定的部分到當前名稱空間中。語法如下:
From…import* 語句
把一個模組的所有內容全都匯入到當前的名稱空間也是可行的,只需使用如下宣告:
這提供了一個簡單的方法來匯入一個模組中的所有專案。慎用 from…import *。
import 和 from 的區別:
import匯入使用時,加字首 module.func()。相當於把模組程式碼放在當前檔案中執行一遍。
from可以指定需要的函式或變數匯入。
匯入模組和當前py檔案都有同一個函式,呼叫會呼叫哪一個?
因為python是解釋型,所以後面覆蓋前面。
from … import … as …
3. import本質
import 本質:
匯入一個模組本質就是解釋執行一個python檔案
匯入一個包本質就是解釋該包下的__init__.py檔案
__init__.py
包:本質就是一個目錄(必須帶有一個__init__.py檔案),用來從邏輯上組織模組
匯入包,怎麼匯入?
匯入包的本質:執行包下面的__init__.py檔案
匯入包下的模組
包下面的模組,這樣呼叫是錯誤的
在__init__.py內容中匯入模組
4、路徑搜尋和搜尋路徑
上面提到的都是匯入同級目錄下的模組,如果不在同一個目錄下:
import module_name實際找module_name.py檔案,是檔案就一定要有路徑。
匯入模組就是:找到.py檔案的位置,把它執行一遍,從哪裡找呢?sys.path.
- # 以上可見:sys.path 是一個列表
- # 裡面的 '' 指的當前路徑,這是為何查詢模組先從當前目錄查詢的原因
- os.path.abspath(__file__) # 當前檔案絕對路
- os.path.dirname(os.path.abspath(__file__)) #獲取目錄名
- sys.path.append() :追加到最後
- # 所以:可以如下,動態新增路徑到第一
- sys.path.insert
5. 匯入優化
6. 阻止屬性匯入
如果你不想讓某個模組屬性被 “from module import *” 匯入 , 那麼你可以給你不想匯入的屬性名稱加上一個下劃線( _ )。 不過如果你匯入了整個模組或是你顯式地匯入某個屬性這個隱藏資料的方法就不起作用了。
二、模組的分類
a:標準庫
b:開源模組-第三方模組
c:自定義模組
三、常用內建模組
1、os模組
用於提供系統級別的操作
2、time和datetime
在Python中,通常有這幾種方式來表示時間:
時間戳
格式化的時間字串
元組(struct_time)共九個元素。
由於Python的time模組實現主要呼叫C庫,所以各個平臺可能有所不同。
UTC(Coordinated Universal Time,世界協調時)亦即格林威治天文時間,世界標準時間。在中國為UTC+8。DST(Daylight Saving Time)即夏令時。
時間戳(timestamp)的方式:通常來說,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。我們執行“type(time.time())”,返回的是float型別。返回時間戳方式的函式主要有time(),clock()等。
元組(struct_time)方式:struct_time元組共有9個元素,返回struct_time的函式主要有gmtime(),localtime(),strptime()。
時間轉為時間戳
格式化時間字串
轉化時間戳和元組到時間字串
時間加減
更多幹貨分享加python程式語言學習QQ群 515267276
3、random模組
4、sys模組
5、shutil模組
高階的 檔案、資料夾、拷貝、壓縮包等 處理模組
6、ConfigParser
用於對特定的配置進行操作,當前模組的名稱在 python 3.x 版本中變更為 configparser。
來看一個好多軟體的常見文件格式如下
如果想用python生成一個這樣的文件怎麼做呢?
• 生成
• 讀取出來
• configparser增刪改查語法
7、hashlib模組
用於加密相關的操作,3.x裡代替了md5模組和sha模組,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 演算法,hash 加密都是bytes型別
python 還有一個 hmac 模組,它內部對我們建立 key 和 內容 再進行處理然後再加密
8、Subprocess模組
呼叫subprocess.run(…)是推薦的常用方法,在大多數情況下能滿足需求,但如果你可能需要進行一些複雜的與系統的互動的話,你還可以用subprocess.Popen(),語法如下:
可用引數:
args:shell命令,可以是字串或者序列型別(如:list,元組)
bufsize:指定緩衝。0 無緩衝,1 行緩衝,其他 緩衝區大小,負值 系統緩衝
stdin, stdout, stderr:分別表示程式的標準輸入、輸出、錯誤控制代碼
preexec_fn:只在Unix平臺下有效,用於指定一個可執行物件(callable object),它將在子程序執行之前被呼叫
close_sfs:在windows平臺下,如果close_fds被設定為True,則新建立的子程序將不會繼承父程序的輸入、輸出、錯誤管道。 所以不能將close_fds設定為True同時重定向子程序的標準輸入、輸出與錯誤(stdin, stdout, stderr)。
shell:同上
cwd:用於設定子程序的當前目錄
env:用於指定子程序的環境變數。如果env = None,子程序的環境變數將從父程序中繼承。
universal_newlines:不同系統的換行符不同,True -> 同意使用
startupinfo與createionflags只在windows下有效 將被傳遞給底層的CreateProcess()函式,用於設定子程序的一些屬性,如:主視窗的外觀,程序的優先順序等等
終端輸入的命令分為兩種:
• 輸入即可得到輸出,如:ifconfig
• 輸入進行某環境,依賴再輸入,如:python
需要互動的命令示例
9、re-正則表示式模組
常用正則表示式符號
最常用的匹配語法
分組匹配 和 group()、groups()、groupdict()
更多幹貨分享加python程式語言學習QQ群 515267276
10、logging模組
python的logging模組提供了標準的日誌介面,你可以通過它儲存各種格式的日誌,logging的日誌可以分為 debug(), info(), warning(), error() and critical() 5個級別,下面我們看一下怎麼用。
最簡單用法
看一下這幾個日誌級別分別代表什麼意思
如果想把日誌寫到檔案裡,也很簡單
其中下面這句中的level=loggin.INFO意思是,把日誌紀錄級別設定為INFO,也就是說,只有比日誌是INFO或比INFO級別更高的日誌才會被紀錄到檔案裡,在這個例子, 第一條日誌是不會被紀錄的,如果希望紀錄debug的日誌,那把日誌級別改成DEBUG就行了。
如果想同時把log列印在螢幕和檔案日誌裡,就需要了解一點複雜的知識 了
11、json和pickle資料序列化
str eval
資料序列化
json只能處理簡單的,所有語言通用的,函式不能json序列化
pickle可以序列化python所有的資料型別
12、shelve 模組
shelve模組是一個簡單的k,v將記憶體資料通過檔案持久化的模組,可以持久化任何pickle可支援的python資料格式
13、xml處理模組
xml是實現不同語言或程式之間進行資料交換的協議,跟json差不多,但json使用起來更簡單,json之前的交換方式
14、PyYAML模組
更多幹貨分享加python程式語言學習QQ群 515267276
Python也可以很容易的處理ymal文件格式,只不過需要安裝一個模組