python123第五章_python 3.5學習筆記(第五章)

本章內容

1、什么是模塊

2、模塊的導入方法

3、搜索路徑

4、重要標準庫

一、什么是模塊

1、模塊本質上是一個以.py 結尾的python文件,包含了python對象定義和python語句。

2、模塊是用來從邏輯上組織python代碼(定義變量、函數、類、邏輯等)以實現某種功能

3、包:包含多個模塊的文件夾(包中要有一個__init__.py的文件,文件內容可以是空的)

二、導入模塊

1、完全導入

import 模塊1[, 模塊2[,... 模塊N]

from 包名 import 模塊名

import test 相當于把test中的所有代碼都賦值給了test這個變量

注:

(1)建議每一個模塊都單獨導入便于閱讀

(2)也可以使用 from module_name import * 來導入模塊中的所有功能,但是不建議這樣做

(3)如果模塊名字太長,導入后調用會不方便,可以使用下面的方法

import 原模塊名 as 新模塊名

(4)一個模塊只能被導入一次

2、部分導入

from 模塊名 import 方法名

3、導入包

import包名#只執行init文件中的code

import包名.模塊名#既執行init文件中的code,也會執行導入的模塊中的code

小結:

1、導入模塊的本質是把python文件執行一遍

2、導入包的本質是執行包下的__init__.py 文件

三、搜索路徑

import module_name-->module_name.py-->module_name.py的路徑-->sys.path-->在當前目錄下尋找-

->找父集目錄【os模塊-->os.path.dirname(os.path.abspath(__file__))】

當導入一個模塊的時候,python解釋器對模塊位置的搜索順序是:

1、當前目錄

2、如果不在當前目錄,Python 則搜索在 shell 變量 PYTHONPATH 下的每個目錄。

3、如果都找不到,Python會察看默認路徑。

四、重要標準庫

1、time標準庫

1)time模塊中時間的表示方法有三種:

a、 timestamp時間戳,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量

b、struct_time時間元組,共有九個元素組 。

time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=20, tm_min=20, tm_sec=45, tm_wday=6, tm_yday=140, tm_isdst=0)2018

c、format time 格式化時間,已格式化的結構使時間更具可讀性。包括自定義格式和固定格式。(如:年-月-日-時- 分-秒)

2)time模塊中的內置方法

a、time()

——return current time in seconds since the Epoch as a float

#獲取時間戳(秒)

importtime

a=time.time()print(a)

》1526822821.9055681

3)sleep()

——delay for a number of seconds given as a float 、

#程序休眠

importtime

time.sleep(3)print("休眠3s")

4)gmtime()

—— convert seconds since Epoch to UTC tuple

#把時間戳轉換為struct_time的格式,默認對當前時間進行轉換,轉換結果是utc時區的時間

importtime

a=time.gmtime()print(a)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=13, tm_min=31, tm_sec=24, tm_wday=6, tm_yday=140, tm_isdst=0)

5)localtime()

——convert seconds since Epoch to local time tuple

#把時間戳轉換為struct_time的格式,默認對當前時間進行轉換,轉換結果是本地時區的時間

importtime

a=time.localtime()print(a)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=33, tm_sec=1, tm_wday=6, tm_yday=140, tm_isdst=0)

注意:mgtime() 和 loacltime() 之間相差8個小時。

6)asctime()

——?convert time tuple to string

#接收的變量是元組

importtime

a=time.localtime()

b=time.asctime(a)print(a)print(b)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=38, tm_sec=4, tm_wday=6, tm_yday=140, tm_isdst=0)

》Sun May20 21:38:04 2018

7)ctime()

—— convert time in seconds to string

#接收的變量是時間戳

importtime

a=time.time()

b=time.ctime(a)print(a)print(b)

》1526823558.3019936》Sun May20 21:39:18 2018

8)mktime()

——convert local time tuple to seconds since Epoch

#把struct_time轉換為時間戳的形式

importtime

a=time.localtime()

b=time.mktime(a)print(a)print(b)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=40, tm_sec=33, tm_wday=6, tm_yday=140, tm_isdst=0)

》1526823633.0

9)strftime()

——convert time tuple to string according to format specification

#把元組格式的時間轉換為格式化的字符串格式的時間

importtime

a=time.localtime()

b= time.strftime("%Y-%m-%d %H:%M:%S",a)print(a)print(b)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=45, tm_sec=7, tm_wday=6, tm_yday=140, tm_isdst=0)

》2018-05-20 21:45:07

10)strptime()

——parse string to time tuple according to format specification

#把格式化的字符串格式的時間轉換為元組格式的時間

importtime

a=time.localtime()

b= time.strftime("%Y-%m-%d %H:%M:%S",a)

c= time.strptime(b,"%Y-%m-%d %H:%M:%S")print(a)print(b)print(c)

》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=47, tm_sec=17, tm_wday=6, tm_yday=140, tm_isdst=0)

》2018-05-20 21:47:17》time.struct_time(tm_year=2018, tm_mon=5, tm_mday=20, tm_hour=21, tm_min=47, tm_sec=17, tm_wday=6, tm_yday=140, tm_isdst=-1)

2、datatime標準庫

1)datetime.datetime.now()

——當前時間

importdatetimeprint(datetime.datetime.now()) #當前時間

》2018-05-20 21:53:21.906109

2)replace()

——修改當前時間

importdatetime

a_time=datetime.datetime.now()print(a_time)

b_time= a_time.replace(year=1,month=1,day=1,minute=0,hour=0,second=0)print(b_time)

》2018-05-20 21:55:57.781579》0001-01-01 00:00:00.781579

3)timedelta()

——時間延遲

importdatetimeprint("當前時間:",datetime.datetime.now())print(datetime.datetime.now()+datetime.timedelta(3)) #當前時間加三天

print(datetime.datetime.now()+datetime.timedelta(-3)) #當前時間減三天

print(datetime.datetime.now()+datetime.timedelta(hours=3)) #當前時間加三個小時

print(datetime.datetime.now()+datetime.timedelta(hours=-3)) #當前時間減三個小時

print(datetime.datetime.now()+datetime.timedelta(minutes=30)) #當前時間加30分鐘

》當前時間: 2018-05-20 21:59:19.389405》2018-05-23 21:59:19.389405》2018-05-17 21:59:19.389405》2018-05-21 00:59:19.389405》2018-05-20 18:59:19.389405》2018-05-20 22:29:19.389405

3、random標準庫

1)隨機取浮點數

(a)不指定隨機區間

importrandomprint(random.random())

》0.23569079391833148

(b)指定隨機區間

importrandomprint(random.uniform(1,10))>>>6.12050957632076

#包括1和10

2)隨機取整數

importrandomprint(random.randint(1,3))#包括1和3

print(random.randrange(1,3))

#包括1但是不包括3

3)傳入參數,然后在參數中隨機取出內容

(a)從傳入的參數中隨機取一個值

importrandomprint(random.choice("sfbuewahelih"))

》f

(b)從傳入的內容中隨機取n位

importrandomprint(random.sample("nioasfgje9gh",3))

#取3位,結果以列表的形式呈現并且是序的

》['s', 'n', 'a']

4)打亂順序

importrandom

items= [1,2,3,4,5]print(items)

random.shuffle(items)print(items)>>>[1, 2, 3, 4, 5]

[2, 4, 5, 1, 3]

5)利用random模塊實現一個簡單的驗證碼功能

importrandom

checkcode= ''

for i in range(5):

current= random.randint(0,5)if current ==i:

tmp= chr(random.randint(65,90))else:

tmp= random.randint(0,9)

checkcode+=str(tmp)print(checkcode)

4、os模塊

提供對操作系統進行調用的接口

1)os.getcwd() :獲取當前工作目錄,即當前py腳本工作的目錄路徑

2)os.chdir("dirname") :改變當前腳本的工作目錄,相當于shell下的cd

3)os.curdir :返回當前目錄

4)os.pardir : 獲取當前目錄的父目錄字符串名

5)os.makedirs("dirname1/dirname2") : 可生成多層遞歸目錄

6)os.removedirs("dirname1") : 若目錄為空,則刪除,并遞歸到上一級目錄,如果仍然為空,則繼續刪除,以此類推

7)os.mkdir("dirname") : 生成單級目錄,相當于shell中的mkdir dirname

8)os.rmdir("dirname") : 刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當于shell中的rmdir dirname

9)os.listdir("dirname") : 列出指定目錄下的所有文件和子目錄,包括隱藏文件,并以列表的方式打印

10)os.remove() : 刪除一個文件

11)os.rename("oldname","newname") :重命名文件/目錄

12)os.stat("path/filename") :獲取文件/目錄信息

13)os.sep :輸出操作系統特定的路徑分隔符,win下為“\\” , Linux 下為“/”

14)os.linesep :輸出當前平臺使用的行終止符(換行符),win下為“\t\n” , Linux 下為“\n”

15)os.pathsep : 輸出用于分割文件路徑的字符串

16)os.name : 輸出字符串指示當前使用平臺。 win->"nt", Linux->"posix"

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

18)os.environ :獲取系統環境變量

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

20)os.path.split(path) : 將path分割成目錄和文件名二元組返回

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

22)os.path.basename(path) : 返回path最后的文件名。如果path以 / 或 \ 結尾,那么就會返回空值。

23)os.path.exists(path) : 如果path存在,返回True

24)os.path.isabs(path) : 如果path是絕對路徑,返回True

25)os.path.isfile(path) :如果path是一個存在的文件,返回True,否則返回False

26)os.path.isdir(path) :如果path是一個存在的目錄,則返回true,否則返回false

27)os.path.join(path1 [,path2 [, ......]]) :將多個路徑組合后返回,第一個絕對路徑之前的參數將被忽略

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

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

5、sys模塊

1) sys.argv : 實現從程序外部向程序傳遞參數

2) sys.exit([arg]) : 程序中間的退出,arg=0為正常的退出

3) sys.getdefaultencoding() : 獲取系統當前編碼,一般默認為ascii

4) sys.setdefaultencoding() : 設置系統默認編碼,執行dir(sys) 時不會看到這個方法,在解釋器中執行不通過,可以先執行reload(sys) ,

再執行setdefaultencoding('utf-8'), 此時將系統默認編碼設置為utf-8。

5) sys.getfilesystemencoding() :? 獲取文件系統使用編碼方式,windows下返回“mbcs”,mac下返回“utf-8”。

6) sys.path : 獲取指定模塊搜索路徑的字符串集合,可以將寫好的模塊放在得到的某個路徑下,就可以在程序中import時正確找到。

7) sys.platform : 獲取當前系統平臺

6、shutil模塊

可以復制(copy),可以壓縮(zip)

參考:https://blog.csdn.net/ff_smile/article/details/78081909

7、Configparser模塊

參考:https://blog.csdn.net/miner_k/article/details/77857292

8、xml模塊

參考:https://www.jb51.net/article/114411.htm

9、shelve模塊

參考:https://www.jb51.net/article/118198.htm

10、Hashlib模塊

參考:https://blog.csdn.net/seymour163/article/details/53448029

11、Hmac模塊

參考:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0015108777177966ef0f4f8510a41b3b8c48cdcf7047b2d000

12、正則表達式Re模塊

基礎語法:

1)?'.'?????默認匹配除\n之外的任意一個字符,若指定flag DOTALL,則匹配任意字符,包括換行

2)?'^'?????匹配字符開頭,若指定flags MULTILINE,這種也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)

3)?'$'?????匹配字符結尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以

4)?'*'?????匹配*號前的字符0次或多次,re.findall("ab*","cabb3abcbbac")? 結果為['abb','ab','a']

5)?'+'?????匹配前一個字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 結果['ab','abb']

6)?'?'?????匹配前一個字符1次或0次

7)?'{m}'???匹配前一個字符m次

8)?'{n,m}'?匹配前一個字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 結果'abb','ab','abb']

9)?'|'?????匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 結果'ABC'

10)?'(...)'?分組匹配,re.search("(abc){2}a(123|456)c","abcabca456c").group() 結果 abcabca456c

11)?'\A'????只從字符開頭匹配,re.search("\Aabc","alexabc") 是匹配不到的

12)?'\Z'????匹配字符結尾,同$

13)?'\d'????匹配數字0-9

14)?'\D'????匹配非數字

15)?'\w'????匹配[A-Za-z0-9]

16)?'\W'????匹配非[A-Za-z0-9]

17)?'s'?????匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 結果'\t'

18)'(?P...)'?分組匹配 re.search("(?P[0-9]{4})(?P[0-9]{2})(?P[0-9]{4})","371481199306143242").groupdict("city")

結果{'province':'3714','city':'81','birthday':'1993'}

常用語法:

1) re.match("","") 從頭開始匹配

2) re.search("","") 從整個文本中來搜索

3) re.findall("","") findall沒有group方法

4) re.split("","") 按照指定內容進行分割

5) re.sub("匹配的內容","指定內容","待匹配項"[, count = n])

將匹配到的內容更換為指定內容,count 表示需要更換的次數,當count=2時,只更換匹配到的前兩個

6) ^ 匹配字符的開頭

7) \d 匹配一個數字

8) \d+ 匹配一個或多個數字

9) $ 以最后一個要匹配的字符結尾

10) [a-z] 從小寫a到小寫z

11) [a-zA-Z] 從小寫a到大寫Z

12) [a-zA-Z0-9] 從小寫a到數字9

13) re.search("[a-z]+","adasfAfsaB",flags=re.I)

flags=re.I 表示忽略大小寫   flags=re.M 表示多行模式,改變'^'和'$'的行為   flags=re.S 表示點任意匹配模式,改變'.'的行為

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534849.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534849.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534849.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

string 長度_String源碼解析

本章源碼分析基于JDK1.7實現的接口String類被final修飾詞修飾,代表不可修改的特性,它實現了三個接口,Serializable是序列化接口,Compareble是排序接口,Char是字符序列接口。主要成員變量char[]:String通過c…

將你一張表的值覆蓋_山西聯通攜手華為完成長風商務區宏微協同,立體覆蓋,打造5G精品網絡...

近日,中國聯通山西分公司(以下簡稱“山西聯通”)在太原長風商務區繼5G CA超高速率升級之后,又針對長風商務區兩層活動區域進行了5G宏微協同的立體覆蓋,實現了該區域5G網絡的連續部署。長風商務區建筑結構設計新穎,占地面積3.06平方…

16速 java_不停歇的 Java 即將發布 JDK 16,新特性速覽!

之前在 JDK 15 中預覽的密封類和接口限制其余類和接口能夠擴展或實現它們。該計劃的目標包括,容許類或接口的做者控制負責實現它的代碼,提供比訪問修飾符更聲明性的方式來限制超類的使用,以及經過提供模式分析的基礎來支持模式匹配的將來方向…

局域網內文件傳輸速度_詳解蒲公英路由器組網 實現文件共享

蒲公英路由器,除了具備普通路由器的功能之外,如圖:最大的特色是可以實現智能組網:最大的特色是可以實現智能組網:采用全新自主研發的Cloud VPN技術替代傳統VPN,基于SD-WAN智能組網方案,快速組建…

java emoji顯示亂碼_Java 解決Emoji表情過濾問題

Emoji表情從三方數據中獲取沒有過濾,導致存入DB的時候報錯。原因:UTF-8編碼有可能是兩個、三個、四個字節。Emoji表情是4個字節,而Mysql的utf8編碼最多3個字節,所以數據插不進去。方法1.將已經建好的表也轉換成utf8mb42&#xff0…

mongotemplate中save拋出異常_異常處理的三個好習慣 | Python 工匠

文 | piglei 編輯 | EarlGrey推薦 | 編程派(微信ID:codingpy)前言如果你用 Python 編程,那么你就無法避開異常,因為異常在這門語言里無處不在。打個比方,當你在腳本執行時按 ctrlc 退出,解釋器就會產生一個 KeyboardI…

java 百度網盤上傳_使用pcs api往免費的百度網盤上傳下載文件的方法

百度個人云盤空間大,完全免費,而且提供了pcs api供調用操作文件,在平時的項目里往里面保存一些文件是很實用的。環境準備:開通讀寫網盤的權限及獲取access_token:http://blog.csdn.net/langyuezhang/article/details/47206621百度…

python縮進教學_Python縮進和選擇學習

縮進Python最具特色的是用縮進來標明成塊的代碼。我下面以if選擇結構來舉例。if后面跟隨條件,如果條件成立,則執行歸屬于if的一個代碼塊。先看C語言的表達方式(注意,這是C,不是Python!)if ( i > 0 ){ x 1; y 2;}如果i …

php如何新建xml文件,PHP中的生成XML文件的4種方法分享

生成如下XML串Xml代碼title1content12009-10-11title2content22009-11-11方法I.【直接生成字符串】使用純粹的PHP代碼生成字符串,并把這個字符串寫入一個以XML為后綴的文件。這是最原始的生成XML的方法,不過有效!$data_array array(array(ti…

組態王能直接讀取儀表數據嗎_液晶多功能網絡電力儀表PD800H

液晶多功能網絡電力儀表PD800H-H44三相三線多功用電力表面,一般也被稱作網絡電力表面,它是一種數字化的監控設備,其功用集成了電量測量,情況監控,遠程通訊為一體,作業原理上選用了現代核算機技術和數字信號…

python程序顯示自己的版權_手把手教你Pycharm皮膚主題及個性化設置,python程序員必備-Go語言中文社區...

1.設置IDE皮膚主題File -> Settings -> Appearance -> Theme -> 選擇“Alloy.IDEA Theme”根據自己的喜好設置字體大小,以及樣式。2.修改字體大小File -> Settings > Editor -> Colors & Fonts -> Font -> Size -> 設置為“14”3…

java多線程activemq,多線程JMS客戶端ActiveMQ

我正在使用以下代碼創建多個JMS會話,以供多個使用者使用消息。我的問題是代碼以單線程方式運行。即使消息存在于隊列中,第二個線程也無法接收任何內容,而是繼續輪詢。同時,第一個線程完成對第一批的處理,然后返回并使用…

python cnn 實例_基于CNN的紋理合成實踐【附python實現】

Q0: Preliminary knowledge of Texture SynthesisBaseline請見此處,下文所有的代碼修改均建立此代碼基礎之上。1. 紋理合成簡述?紋理合成(Texture Systhesis)技術主要應用于計算機圖形學等領域,被用于模擬幾何模型的表面細節、增強繪制模型的真實感。不…

php使用jasperreport,php-報表引擎指南(Pentaho,JasperReports,BIRT)

我在各種論壇和他們的網站上花費了大約4-5個小時,研究可以幫助我發展的報告工具.我是使用這種工具的新手,可以使用一些特定的指導.我正在開發一個Web應用程序,該應用程序將托管在一臺服務器上,但是多個用戶可以通過登錄進行訪問.每個用戶將擁有自己的帳戶,并且只能訪問僅與與其…

python中dlib庫_python 基于dlib庫的人臉檢測的實現

本周暫時比較清閑,可以保持每日一更的速度。國外身份證項目新增需求,檢測出身份證正面的人臉。最開始考慮mobilenet-ssd,經同事提醒,有現成的人臉庫dlib,那就用傳統方法嘗試一下。dlib安裝dlib的安裝小費一波周折&…

php養老院管理系統,XYCMS養老院建站系統 v3.8

XYCMS養老院建站系統是一個專為養老院而設計的養老院建筑系統。中心信息管理:包括基本信息管理,添加,問答中心信息管理新聞動態管理:管理新聞信息內容,管理相關分類,添加或者刪除生活環境內容管理&#xff…

php 修改文件訪問時間,PHP中獲取文件創建日期、修改日期、訪問時間的方法

php獲取文件創建時間、修改時間常用代碼filemtime ( string filename )返回文件上次被修改的時間,出錯時返回 FALSE。時間以 Unix 時間戳的方式返回,可用于 date()。例如:$afilemtime("log.txt");echo "修改時間:&…

超過響應緩沖區限制_Nginx如何限制并發連接數和連接請求數?

全網最全1500份Java學習資料、500份BAT面試真題:關注公眾號,輸入“面試題”,獲取提取碼!首先講解兩個算發:算法思想是:令牌以固定速率產生,并緩存到令牌桶中;令牌桶放滿時&#xff0…

Php公鑰加密data是空,php 生成加密公鑰加密私鑰實例詳解

php 生成加密公鑰加密私鑰實例詳解生成公鑰私鑰 win下必須要openssl.cof支持 liunx一般已自帶安裝$config array(//"digest_alg" > "sha512","private_key_bits" > 512, //字節數 512 1024 2048 4096 等"private_key_type" >…

python句柄無效_subprocess.Popen 運行windows命令出現“句柄無效”報錯的解決方法

【代碼筆記】iOS-關于UIFont的一些define一,效果圖. 二,工程圖. 三,代碼. RootViewController.h #import interface RootViewController ...JQuery Datatables Dom 和 Language 參數詳細說明http://linleizi.iteye.com/blog/2086435 *********************************** Data …