小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

想做Python開發(fā),這14種常用Python模塊,你必須知道!

 首家i55ryzehof 2018-08-20

之前有小伙伴留言分享,希望可以更新寫關(guān)于Python OS模塊和SYS模塊方面的文章,今天小七特地給大家整理了下噢,有需要的建議可以收藏起來喔~

1

一、模塊介紹

1. 定義:

模塊:本質(zhì)就是.py結(jié)尾的python文件(文件名:test.py,對應的模塊名:test)

用來從邏輯上組織python代碼(變量,函數(shù),類,邏輯:實現(xiàn)一個功能)

2. 語法:

· import 語句

當解釋器遇到import語句,如果模塊在當前的搜索路徑就會被導入。搜索路徑是一個解釋器會先進行搜索的所有目錄的列表。

導入模塊:

1、 import module1[, module2[,... moduleN]

調(diào)用符號:.

1、import os

2、print(os.sep)

3、print(os.getcwd())

· From…import 語句

Python的from語句讓你從模塊中導入一個指定的部分到當前命名空間中。語法如下:

1、from modname import name1[, name2[, ... nameN]]

From…import* 語句

把一個模塊的所有內(nèi)容全都導入到當前的命名空間也是可行的,只需使用如下聲明:

1、from modname import *

這提供了一個簡單的方法來導入一個模塊中的所有項目。慎用 from…import *。

· import 和 from 的區(qū)別:

import導入使用時,加前綴 module.func()。相當于把模塊代碼放在當前文件中執(zhí)行一遍。

from可以指定需要的函數(shù)或變量導入。

導入模塊和當前py文件都有同一個函數(shù),調(diào)用會調(diào)用哪一個?

因為python是解釋型,所以后面覆蓋前面。

· from … import … as …

3. import本質(zhì)

import 本質(zhì):

導入一個模塊本質(zhì)就是解釋執(zhí)行一個python文件

導入一個包本質(zhì)就是解釋該包下的__init__.py文件

1、module = all_code(所有代碼)

2、import :本質(zhì)把模塊所有代碼解釋一遍,復制給模塊名

3、from module import name :把這個模塊的代碼把哪一部分給解釋了,賦值給name

· __init__.py

:本質(zhì)就是一個目錄(必須帶有一個__init__.py文件),用來從邏輯上組織模塊

導入包,怎么導入?

導入包的本質(zhì):執(zhí)行包下面的__init__.py文件

導入包下的模塊

包下面的模塊,這樣調(diào)用是錯誤的

在__init__.py內(nèi)容中導入模塊

1、from . import module

2、# '.' 指的相對路徑,指的誰的相對路徑?__init__.py的相對路徑還是調(diào)用init的那個模塊的

3、指的是__init__.py的相對路徑。

4、路徑搜索和搜索路徑

上面提到的都是導入同級目錄下的模塊,如果不在同一個目錄下:

import module_name實際找module_name.py文件,是文件就一定要有路徑。

導入模塊就是:找到.py文件的位置,把它執(zhí)行一遍,從哪里找呢?sys.path.

1、>>> import sys

2、 >>> sys.path['', 3、'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35\\python35.zip', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35\\DLLs', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35\\lib', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python35\\lib\\site-packages']

1、sys.path.append() :追加到最后

2、# 所以:可以如下,動態(tài)添加路徑到第一

3、sys.path.insert

5. 導入優(yōu)化

1、import module_test

2、# import導入情況,如果重復調(diào)用,python就會重復找,避免重復找,可以用from方式導入

3、from module_test import test

6. 阻止屬性導入

如果你不想讓某個模塊屬性被 “from module import *” 導入 , 那么你可以給你不想導入的屬性名稱加上一個下劃線( _ )。 不過如果你導入了整個模塊或是你顯式地導入某個屬性這個隱藏數(shù)據(jù)的方法就不起作用了。

02

二、模塊的分類

a:標準庫

b:開源模塊-第三方模塊

c:自定義模塊

03

三、常用內(nèi)置模塊

1、os模塊

用于提供系統(tǒng)級別的操作

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 輸出操作系統(tǒng)特定的路徑分隔符,win下為'\\',Linux下為'/'

os.linesep 輸出當前平臺使用的行終止符,win下為'\t\n',Linux下為'\n'

os.pathsep 輸出用于分割文件路徑的字符串os.name 輸出字符串指示當前使用平臺。win->'nt'; Linux->'posix'

os.system('bash command') 運行shell命令,直接顯示

os.environ 獲取系統(tǒng)環(huán)境變量

os.path.abspath(path) 返回path規(guī)范化的絕對路徑

os.path.split(path) 將path分割成目錄和文件名二元組返回,它僅僅是以 'PATH' 中最后一個 '/' 作為分隔符,分隔后,將索引為0的視為目錄(路徑),將索引為1的視為文件名

os.path.dirname(path) 返回path的目錄。其實就是os.path.split(path)的第一個元素

os.path.basename(path) 返回path最后的文件名。如何path以/或\結(jié)尾,那么就會返回空值。即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[, ...]]) 將多個路徑組合后返回,第一個絕對路徑之前的參數(shù)將被忽略

os.path.getatime(path) 返回path所指向的文件或者目錄的最后存取時間

os.path.getmtime(path) 返回path所指向的文件或者目錄的最后修改時間

2、time和datetime

在Python中,通常有這幾種方式來表示時間:

時間戳

格式化的時間字符串

元組(struct_time)共九個元素。

由于Python的time模塊實現(xiàn)主要調(diào)用C庫,所以各個平臺可能有所不同。

UTC(Coordinated Universal Time,世界協(xié)調(diào)時)亦即格林威治天文時間,世界標準時間。在中國為UTC+8。DST(Daylight Saving Time)即夏令時。

時間戳(timestamp)的方式:通常來說,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。我們運行“type(time.time())”,返回的是float類型。返回時間戳方式的函數(shù)主要有time(),clock()等。

元組(struct_time)方式:struct_time元組共有9個元素,返回struct_time的函數(shù)主要有g(shù)mtime(),localtime(),strptime()。

1、time.time() # 獲取時間戳:當前時間減1970-1-1 00:00 ==> 秒>>> time.localtime() # 本地時間,元組方式(tm_isdst() 是否夏令時)time.struct_time(tm_year=2016, tm_mon=8, tm_mday=29, tm_hour=θ, tm_min=51, tm_sec=37, tm_wday=θ, tm_yday=242, tm_isdst=θ)

2、help(time) # 模塊幫助>>> time.timezone # 查看時區(qū)-28800 # 28800/60秒/60分 = 8時 ==> utc --> 標準+8

3、time.sleep() # 時間睡幾秒time.gmtime() # 不加時間戳,為國際標準時間time.localtime() # 不加時間戳,本地時間# 加上則從1970年開始算。

· 時間轉(zhuǎn)為時間戳

1、>>> x = time.localtime()

2、 >>> x

3、time.struct_time(tm_year=2016, tm_mon=8, tm_mday=29, tm_hour=1, tm_min=θ, tm_sec=8, tm_wday=θ, tm_yday=242, tm_isdst=θ)

4、>>> time.mktime(x)

5、1472403608.θ

· 格式化時間字符串

1、>>> time.strftime('%Y-%m-%d %X',x)'/2、2016-08-29 01:00:08'

3、>>> time.strptime('2016-08-29 01:00:08','%Y-%m-%d %X')

4、time.struct_time(tm_year=2016, tm_mon=8, tm_mday=29, tm_hour=1, tm_min=0, tm_sec=8, tm_wday=0, tm_yday=242, tm_isdst=-1)

5、

6、strftime('格式',struct_time) --> '格式化字符串'

7、strptime('格式化字符串','格式') --> 'struct_time'

· 轉(zhuǎn)化時間戳和元組到時間字符串

1、>>> time.asctime(time.localtime()) # tuple -> string'

2、Mon Aug 29 01:10:47 2016'

3、>>> time.ctime(888888888) # seconds -> string'

4、Tue Mar 3 09:34:48 1998'

· 時間加減

1、import datetime

2、

3、datetime.datetime.now() # 返回 2016-08-19 12:47:03.941925

4、datetime.date.fromtimestamp(time.time()) # 時間戳直接轉(zhuǎn)成日期格式 2016-08-19

5、

6、datetime.datetime.now() + datetime.timedelta(3) # 當前時間+3天

7、datetime.datetime.now() + datetime.timedelta(-3) # 當前時間-3天

8、datetime.datetime.now() + datetime.timedelta(hours=3) # 當前時間+3小時

9、datetime.datetime.now() + datetime.timedelta(minutes=30) # 當前時間+30分

3、random模塊

1、random.random() # 0~1之間的隨機

2、random.randint(1,3) # [1,2,3]

3、random.randrange(3) #[0,1,2]

4、

5、random.choice('hello') # 傳入序列隨機字

6、random.sample('hello',2) # 隨機兩個字母

7、random.uniform(1,3) # 1~3直接隨機

8、a = [1,2,3,4,5]

9、random.shuffle(a) # 洗牌,打亂

10、

11、importstring

12、''.join(random.sample(string.hexdigits,4)) # 隨機4位驗證碼

4、sys模塊

5、shutil模塊

高級的 文件、文件夾、拷貝、壓縮包等 處理模塊

6、ConfigParser

用于對特定的配置進行操作,當前模塊的名稱在 python 3.x 版本中變更為 configparser。

來看一個好多軟件的常見文檔格式如下

如果想用python生成一個這樣的文檔怎么做呢?

· 生成

· 讀取出來

· configparser增刪改查語法

7、hashlib模塊

用于加密相關(guān)的操作,3.x里代替了md5模塊和sha模塊,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法,hash 加密都是bytes類型

python 還有一個 hmac 模塊,它內(nèi)部對我們創(chuàng)建 key 和 內(nèi)容 再進行處理然后再加密

8、Subprocess模塊

調(diào)用subprocess.run(…)是推薦的常用方法,在大多數(shù)情況下能滿足需求,但如果你可能需要進行一些復雜的與系統(tǒng)的交互的話,你還可以用subprocess.Popen(),語法如下:

1、p = subprocess.Popen('find / -size +1000000 -exec ls -shl {} \;',shell=True,stdout=subprocess.PIPE)

2、print(p.stdout.read())

可用參數(shù):

args:shell命令,可以是字符串或者序列類型(如:list,元組)

bufsize:指定緩沖。0 無緩沖,1 行緩沖,其他 緩沖區(qū)大小,負值 系統(tǒng)緩沖

stdin, stdout, stderr:分別表示程序的標準輸入、輸出、錯誤句柄

preexec_fn:只在Unix平臺下有效,用于指定一個可執(zhí)行對象(callable object),它將在子進程運行之前被調(diào)用

close_sfs:在windows平臺下,如果close_fds被設置為True,則新創(chuàng)建的子進程將不會繼承父進程的輸入、輸出、錯誤管道。 所以不能將close_fds設置為True同時重定向子進程的標準輸入、輸出與錯誤(stdin, stdout, stderr)。

shell:同上

cwd:用于設置子進程的當前目錄

env:用于指定子進程的環(huán)境變量。如果env = None,子進程的環(huán)境變量將從父進程中繼承。

universal_newlines:不同系統(tǒng)的換行符不同,True -> 同意使用 \n

startupinfo與createionflags只在windows下有效 將被傳遞給底層的CreateProcess()函數(shù),用于設置子進程的一些屬性,如:主窗口的外觀,進程的優(yōu)先級等等

終端輸入的命令分為兩種:

·輸入即可得到輸出,如:ifconfig

· 輸入進行某環(huán)境,依賴再輸入,如:python

需要交互的命令示例

9、re-正則表達式模塊

常用正則表達式符號

最常用的匹配語法

分組匹配 和 group()、groups()、groupdict()

10、logging模塊

python的logging模塊提供了標準的日志接口,你可以通過它存儲各種格式的日志,logging的日志可以分為 debug(), info(), warning(), error() and critical() 5個級別,下面我們看一下怎么用。

最簡單用法

看一下這幾個日志級別分別代表什么意思

如果想把日志寫到文件里,也很簡單

其中下面這句中的level=loggin.INFO意思是,把日志紀錄級別設置為INFO,也就是說,只有比日志是INFO或比INFO級別更高的日志才會被紀錄到文件里,在這個例子, 第一條日志是不會被紀錄的,如果希望紀錄debug的日志,那把日志級別改成DEBUG就行了。

如果想同時把log打印在屏幕和文件日志里,就需要了解一點復雜的知識 了

11、json和pickle數(shù)據(jù)序列化

str eval

數(shù)據(jù)序列化

json只能處理簡單的,所有語言通用的,函數(shù)不能json序列化

pickle可以序列化python所有的數(shù)據(jù)類型

12、shelve 模塊

shelve模塊是一個簡單的k,v將內(nèi)存數(shù)據(jù)通過文件持久化的模塊,可以持久化任何pickle可支持的python數(shù)據(jù)格式

13、xml處理模塊

xml是實現(xiàn)不同語言或程序之間進行數(shù)據(jù)交換的協(xié)議,跟json差不多,但json使用起來更簡單,json之前的交換方式

參考文檔:

http://www.cnblogs.com/alex3714/articles/5161349.html

14、PyYAML模塊

Python也可以很容易的處理ymal文檔格式,只不過需要安裝一個模塊,參考文檔:

http:///wiki/PyYAMLDocumentation

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多