Python模組之time、

來源:互聯網
上載者:User

標籤:傳參數   令行   列表   except   一級目錄   序列化   curd   字串類型   ==   

Time模組

和時間有關係的我們就要用到時間模組。在使用模組之前,應該首先匯入這個模組。

#常用方法1.time.sleep(secs)(線程)延遲指定的時間運行。單位為秒。2.time.time()擷取目前時間戳

表示時間的三種方式

在Python中,通常有這三種方式來表示時間:時間戳記、元組(struct_time)、格式化的時間字串:

(1)時間戳記(timestamp) :通常來說,時間戳記表示的是從1970年1月1日00:00:00開始按秒計算的位移量。我們運行“type(time.time())”,返回的是float類型。

(2)格式化的時間字串(Format String): ‘1999-12-06’

%y 兩位元的年份表示(00-99)%Y 四位元的年份表示(000-9999)%m 月份(01-12)%d 月內中的一天(0-31)%H 24小時制小時數(0-23)%I 12小時制小時數(01-12)%M 分鐘數(00=59)%S 秒(00-59)%a 本地簡化星期名稱%A 本地完整星期名稱%b 本地簡化的月份名稱%B 本地完整的月份名稱%c 本地相應的日期表示和時間表示%j 年內的一天(001-366)%p 本地A.M.或P.M.的等價符%U 一年中的星期數(00-53)星期天為星期的開始%w 星期(0-6),星期天為星期的開始%W 一年中的星期數(00-53)星期一為星期的開始%x 本地相應的日期表示%X 本地相應的時間表示%Z 當前時區的名稱%% %號本身
python中時間日期格式化符號:

(3)元組(struct_time) :struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天等)

首先,我們先匯入time模組,來認識一下python中表示時間的幾種格式:

#匯入時間模組>>>import time#時間戳記>>>time.time()1500875844.800804#時間字串>>>time.strftime("%Y-%m-%d %X")‘2017-07-24 13:54:37‘>>>time.strftime("%Y-%m-%d %H-%M-%S")‘2017-07-24 13-55-04‘#時間元組:localtime將一個時間戳記轉換為當前時區的struct_timetime.localtime()time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24,          tm_hour=13, tm_min=59, tm_sec=37,                  tm_wday=0, tm_yday=205, tm_isdst=0)

小結:時間戳記是電腦能夠識別的時間;時間字串是人能夠看懂的時間;元組則是用來操作時間的

幾種格式之間的轉換

#時間戳記-->結構化時間#time.gmtime(時間戳記)    #UTC時間,與英國倫敦當地時間一致#time.localtime(時間戳記) #當地時間。例如我們現在在北京執行這個方法:與UTC時間相差8小時,UTC時間+8小時 = 北京時間 >>>time.gmtime(1500000000)time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)>>>time.localtime(1500000000)time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)#結構化時間-->時間戳記 #time.mktime(結構化時間)>>>time_tuple = time.localtime(1500000000)>>>time.mktime(time_tuple)1500000000.0
#結構化時間-->字串時間#time.strftime("格式定義","結構化時間")  結構化時間參數若不傳,則現實目前時間>>>time.strftime("%Y-%m-%d %X")‘2017-07-24 14:55:36‘>>>time.strftime("%Y-%m-%d",time.localtime(1500000000))‘2017-07-14‘#字串時間-->結構化時間#time.strptime(時間字串,字串對應格式)>>>time.strptime("2017-03-16","%Y-%m-%d")time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1)>>>time.strptime("07/24/2017","%m/%d/%Y")time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)

 

#結構化時間 --> %a %b %d %H:%M:%S %Y串#time.asctime(結構化時間) 如果不傳參數,直接返回目前時間的格式化串>>>time.asctime(time.localtime(1500000000))‘Fri Jul 14 10:40:00 2017‘>>>time.asctime()‘Mon Jul 24 15:18:33 2017‘#時間戳記 --> %a %d %d %H:%M:%S %Y串#time.ctime(時間戳記)  如果不傳參數,直接返回目前時間的格式化串>>>time.ctime()‘Mon Jul 24 15:19:07 2017‘>>>time.ctime(1500000000)‘Fri Jul 14 10:40:00 2017‘ 
import timetrue_time=time.mktime(time.strptime(‘2017-09-11 08:30:00‘,‘%Y-%m-%d %H:%M:%S‘))time_now=time.mktime(time.strptime(‘2017-09-12 11:00:00‘,‘%Y-%m-%d %H:%M:%S‘))dif_time=time_now-true_timestruct_time=time.gmtime(dif_time)print(‘過去了%d年%d月%d天%d小時%d分鐘%d秒‘%(struct_time.tm_year-1970,struct_time.tm_mon-1,                                       struct_time.tm_mday-1,struct_time.tm_hour,                                       struct_time.tm_min,struct_time.tm_sec))

 

random模組
>>> import random#隨機小數>>> random.random()      # 大於0且小於1之間的小數0.7664338663654585>>> random.uniform(1,3) #大於1小於3的小數1.6270147180533838#隨機整數>>> random.randint(1,5)  # 大於等於1且小於等於5之間的整數>>> random.randrange(1,10,2) # 大於等於1且小於10之間的奇數#隨機播放一個返回>>> random.choice([1,‘23‘,[4,5]])  # #1或者23或者[4,5]#隨機播放多個返回,返回的個數為函數的第二個參數>>> random.sample([1,‘23‘,[4,5]],2) # #列表元素任意2個組合[[4, 5], ‘23‘]#打亂列表順序>>> item=[1,3,5,7,9]>>> random.shuffle(item) # 打亂次序>>> item[5, 1, 3, 7, 9]>>> random.shuffle(item)>>> item[5, 9, 7, 1, 3]

 

練習:產生隨機驗證碼

import randomdef v_code():    code = ‘‘    for i in range(5):        num=random.randint(0,9)        alf=chr(random.randint(65,90))        add=random.choice([num,alf])        code="".join([code,str(add)])    return codeprint(v_code())
 os模組

os模組是與作業系統互動的一個介面

os.getcwd() 擷取當前工作目錄,即當前python指令碼工作的目錄路徑os.chdir("dirname")  改變當前指令碼工作目錄;相當於shell下cdos.curdir  返回目前的目錄: (‘.‘)os.pardir  擷取目前的目錄的父目錄字元串名:(‘..‘)os.makedirs(‘dirname1/dirname2‘)    可產生多層遞迴目錄os.removedirs(‘dirname1‘)    若目錄為空白,則刪除,並遞迴到上一級目錄,如若也為空白,則刪除,依此類推os.mkdir(‘dirname‘)    產生單級目錄;相當於shell中mkdir dirnameos.rmdir(‘dirname‘)    刪除單級空目錄,若目錄不為空白則無法刪除,報錯;相當於shell中rmdir dirnameos.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.popen("bash command).read()  運行shell命令,擷取執行結果os.environ  擷取系統內容變數os.pathos.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不存在,返回Falseos.path.isabs(path)  如果path是絕對路徑,返回Trueos.path.isfile(path)  如果path是一個存在的檔案,返回True。否則返回Falseos.path.isdir(path)  如果path是一個存在的目錄,則返回True。否則返回Falseos.path.join(path1[, path2[, ...]])  將多個路徑組合後返回,第一個絕對路徑之前的參數將被忽略os.path.getatime(path)  返回path所指向的檔案或者目錄的最後訪問時間os.path.getmtime(path)  返回path所指向的檔案或者目錄的最後修改時間os.path.getsize(path) 返回path的大小
os模組方法大全

 

注意:os.stat(‘path/filename‘)  擷取檔案/目錄資訊 的結構說明

stat 結構:st_mode: inode 保護模式st_ino: inode 節點號。st_dev: inode 駐留的裝置。st_nlink: inode 的連結數。st_uid: 所有者的使用者ID。st_gid: 所有者的組ID。st_size: 普通檔案以位元組為單位的大小;包含等待某些特殊檔案的資料。st_atime: 上次訪問的時間。st_mtime: 最後一次修改的時間。st_ctime: 由作業系統報告的"ctime"。在某些系統上(如Unix)是最新的中繼資料更改的時間,在其它系統上(如Windows)是建立時間(詳細資料參見平台的文檔)。

 

sys模組

sys模組是與python解譯器互動的一個介面

sys.argv           命令列參數List,第一個元素是程式本身路徑sys.exit(n)        退出程式,正常退出時exit(0),錯誤退出sys.exit(1)sys.version        擷取Python解釋程式的版本資訊sys.path           返回模組的搜尋路徑,初始化時使用PYTHONPATH環境變數的值sys.platform       返回作業系統平台名稱
import systry:    sys.exit(1)except SystemExit as e:    print(e)
異常處理和status
import syscount = 1while count <10:    print(count)    if count == 8:        sys.exit()    count += 1print(‘ending‘)結果:12345678

 

json序列化模組

什麼叫序列化——將原本的字典、列表等內容轉換成一個字串的過程就叫做序列化

比如,我們在python代碼中計算的一個資料需要給另外一段程式使用,那我們怎麼給?現在我們能想到的方法就是存在檔案裡,然後另一個python程式再從檔案裡讀出來。但是我們都知道,對於檔案來說是沒有字典這個概念的,所以我們只能將資料轉換成字典放到檔案中。你一定會問,將字典轉換成一個字串很簡單,就是str(dic)就可以辦到了,為什麼我們還要學習序列化模組呢?沒錯序列化的過程就是從dic 變成str(dic)的過程。現在你可以通過str(dic),將一個名為dic的字典轉換成一個字串,但是你要怎麼把一個字串轉換成字典呢?聰明的你肯定想到了eval(),如果我們將一個字串類型的字典str_dic傳給eval,就會得到一個返回的字典類型了。eval()函數十分強大,但是eval是做什麼的?e官方demo解釋為:將字串str當成有效運算式來求值並返回計算結果。BUT!強大的函數有代價。安全性是其最大的缺點。想象一下,如果我們從檔案中讀出的不是一個資料結構,而是一句"刪除檔案"類似的破壞性語句,那麼後果實在不堪設設想。而使用eval就要擔這個風險。所以,我們並不推薦用eval方法來進行還原序列化操作(將str轉換成python中的資料結構)

序列化的目的

1、以某種儲存形式使自訂對象持久化;2、將對象從一個地方傳遞到另一個地方。3、使程式更具維護性。

 

json

Json模組提供了四個功能:dumps、dump、loads、load

 loads和dumps

 

Python模組之time、

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.