歡迎加入QQ討論群258996829
麥子學院 頭像
蘋果6袋
6
麥子學院

python常用模塊有哪些?

發(fā)布時間:2017-08-11 16:42  回復:0  查看:2328   最后回復:2017-08-11 16:42  

本文和大家分享的主要是python中常用幾大模塊相關(guān)內(nèi)容,一起來看看吧,希望對大家學習python有所幫助。

  一、時間模塊(time

  在學習模塊之前我們所接觸的時間模塊

  import time

  time.sleep(1)#(線程)推遲指定的時間運行。單位為秒。time.time()#獲取當前時間戳

  簡單使用

  表示時間的三種方式

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

  1、時間戳(timestamp) :時間戳表示的是從19701100:00:00開始按秒計算的偏移量

  2、格式化的時間字符串(Format String)2017-8-8

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

  python中時間日期格式化符號

  3、元組(struct_time) struct_time元組共有9個元素共九個元素:time.struct_time(tm_year=2017, tm_mon=8, tm_mday=8, tm_hour=16, tm_min=37, tm_sec=23, tm_wday=1, tm_yday=220, tm_isdst=0)

  tm_year(年)                        比如2011

  tm_mon(月)                        1 - 12

  tm_mday(日)                        1 - 31

  tm_hour(時)                        0 - 23

  tm_min(分)                        0 - 59

  tm_sec(秒)                        0 - 61

  tm_wdayweekday       0 - 60表示周日)

  tm_yday(一年中的第幾天)    1 - 366

  tm_isdst(是否是夏令時)        默認為-1

  python中時間日期結(jié)構(gòu)化屬性

  python中表示時間的幾種格式

  import time

  #數(shù)字,時間戳   print(time.time())  #在存時間 并且給計算機用的時候

  #格式化的時間字符串print(time.strftime("%y/%m/%d %H:%M:%S"))   #展示 : 打印時間的時候 需要記錄的時候

  #結(jié)構(gòu)化的時間元組print(time.localtime())  #用于計算機對時間進行計算

  表示時間的格式

  小結(jié):時間戳是計算機能夠識別的時間;時間字符串是人能夠看懂的時間;元組則是用來操作時間的

  幾種格式之間的轉(zhuǎn)換

  import time

  #時間戳-->結(jié)構(gòu)化print(time.gmtime(1500000000))print(time.localtime(1500000000))print(time.localtime(3000000000))print(time.time())

  #結(jié)構(gòu)化-->時間戳

  t = time.localtime()print(t)print(time.mktime(t))

  #結(jié)構(gòu)化-->格式化

  t = time.localtime()s = time.strftime("%B",t)s = time.strftime("%a %b %d %H:%M:%S %Y",t)print(s)

  #格式化-->結(jié)構(gòu)化print(time.strptime(s,"%Y-%m-%d %H"))

  時間格式轉(zhuǎn)化

  注意:格式化和時間戳不能直接轉(zhuǎn)換

  生成固定格式的時間表示格式

  print(time.asctime(time.localtime()))

  print(time.ctime(time.time()))# Tue Aug  8 16:54:09 2017

  #如果不傳參返回當前時間

  View Code

  二、romdom模塊

  import random

  #隨機小數(shù)

  random.random()      # 大于0且小于1之間的小數(shù)

  random.uniform(1,3) #大于1小于3的小數(shù)

  #隨機整數(shù)

  random.randint(1,5)  # 大于等于1且小于等于5之間的整數(shù)

  random.randrange(1,10,2) # 大于等于1且小于10之間的奇數(shù)

  #隨機選擇一個返回

  random.choice([1,'23',[4,5]])  # #1或者23或者[4,5]#隨機選擇多個返回,返回的個數(shù)為函數(shù)的第二個參數(shù)

  random.sample([1,'23',[4,5]],2) # #列表元素任意2個組合

  #打亂列表順序

  item=[1,3,5,7,9]

  random.shuffle(item) # 打亂次序

  三、sys模塊

  sys模塊是與 python解釋器交互的一個接口

  sys.argv           命令行參數(shù)List,第一個元素是程序本身路徑

  sys.exit(n)        退出程序,正常退出時exit(0)

  sys.version        獲取Python解釋程序的版本信息

  sys.maxsize         最大的Int

  sys.path           返回模塊的搜索路徑,初始化時使用PYTHONPATH環(huán)境變量的值

  sys.platform       返回操作系統(tǒng)平臺名稱

  import sysprint(sys.argv)

  # name = sys.argv[1]

  # password = sys.argv[2]

  # if name == 'egon' and password == 'somebody':

  #     print('繼續(xù)執(zhí)行程序')

  # else:

  #     exit()

  # sys.exit()print(sys.version)print(sys.maxsize)print(sys.path)

  # sys.path.clear()  #清除下載的模塊

  import requestsprint(sys.platform)

  四、os模塊

  os模塊是與操作系統(tǒng)交互的一個接口

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

  os.chdir("dirname")  改變當前腳本工作目錄;相當于shellcd

  os.curdir  返回當前目錄: ('.')

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

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

  os.removedirs('dirname1')    若目錄為空,則刪除,并遞歸到上一級目錄,如若也為空,則刪除,依此類推

  os.mkdir('dirname')    生成單級目錄;相當于shellmkdir dirname

  os.rmdir('dirname')    刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當于shellrmdir 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    輸出用于分割文件路徑的字符串 win下為;,Linux下為:

  os.name    輸出字符串指示當前使用平臺。win->'nt'; Linux->'posix'

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

  os.popen("bash command)  運行shell命令,獲取執(zhí)行結(jié)果

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

  os.path

  os.path.abspath(path) 返回path規(guī)范化的絕對路徑 os.path.split(path) path分割成目錄和文件名二元組返回

  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所指向的文件或者目錄的最后修改時間

  os.path.getsize(path) 返回path的大小

  注意:os.stat ('path/filename' )    獲取文件/ 目錄信息   的結(jié)構(gòu)說明

  stat 結(jié)構(gòu):

  st_mode: inode 保護模式st_ino: inode 節(jié)點號。st_dev: inode 駐留的設(shè)備。st_nlink: inode 的鏈接數(shù)。st_uid: 所有者的用戶ID。st_gid: 所有者的組ID。st_size: 普通文件以字節(jié)為單位的大小;包含等待某些特殊文件的數(shù)據(jù)。st_atime: 上次訪問的時間。st_mtime: 最后一次修改的時間。st_ctime: 由操作系統(tǒng)報告的"ctime"。在某些系統(tǒng)上(如Unix)是最新的元數(shù)據(jù)更改的時間,在其它系統(tǒng)上(如Windows)是創(chuàng)建時間(詳細信息參見平臺的文檔)。

  stat 結(jié)構(gòu)

  五、序列化模塊

  什么叫序列化——將原本的字典、列表等內(nèi)容轉(zhuǎn)換成一個字符串的過程就叫做 序列化

  提到轉(zhuǎn)換我們就會想到一個內(nèi)置函數(shù)eval(),這么強大的函數(shù)我們?yōu)槭裁床唤ㄗh大家用呢?eval()可以 將字符串str當成有效的表達式來求值并返回計算結(jié)果。這么強大的功能使它有一個致命的缺點: 安全性。 如果我們從文件中讀出的不是一個數(shù)據(jù)結(jié)構(gòu),而是一句具有破壞性的語句,那么后果實在不堪設(shè)設(shè)想。而使用eval就要擔這個風險。

  序列化的目的

  1、以某種存儲形式使自定義 對象持久化 

  2、將對象從一個地方傳遞到另一個地方。

  3、使程序更具維護性。

  1、json模塊

  Json模塊提供了四個功能:dumpsdump、loadsload

  d = {'1':{'k':[1,2,3,4]}}

  s = str(d)print(s,type(s))print(eval(s),type(eval(s)))  #不安全

  import json#序列化  d轉(zhuǎn)換為字符串#json轉(zhuǎn)換完的字符串類型的字典中的字符串是由""表示的

  ret_s = json.dumps(d)print(ret_s,type(ret_s))

  #反序列化  將字符串格式的字典轉(zhuǎn)換成一個字典

  ret_d = json.loads(ret_s)print(ret_d,type(ret_d))

  f = open('json_file','w')

  dic = {'k1':'v1','k2':'v2','k3':'v3'}#可以直接接收句柄操作

  json.dump(dic,f)# f.write(json.dumps(dic))

  f.close()

  f = open('json_file')#可以直接接收句柄操作

  dic2 = json.load(f)print(dic2,type(dic2))

  f.close()

  方法簡介

  2、pickle模塊

  和json區(qū)別:你序列化的內(nèi)容如果是列表或者字典,使用json模塊。 但如果序列化其他的數(shù)據(jù)類型,而未來你還會用python對這個數(shù)據(jù)進行反序列化的話,那么就可以使用pickle。如果是使用json序列化的其他語言可以使用,pickle不可以。

  pickle模塊提供了四個功能:dumpsdump、loads、load

  import pickle

  tu = {1,2,3,4}

  pik_b = pickle.dumps(tu)

  print(pik_b)  #二進制內(nèi)容

  print(pickle.loads(pik_b))  #集合

  #其它兩個方法的區(qū)別和json一樣也是可以直接操作句柄

  方法簡介

  3shelve模塊

  shelve只提供給我們一個open方法,是用key來訪問的,使用起來和字典類似。

  import shelve

  f = shelve.open('shelve_file')

  f['key'] = {'int':10, 'float':9.5, 'string':'Sample data'}  #直接對文件句柄操作,就可以存入數(shù)據(jù)

  f.close()

  f1 = shelve.open('shelve_file')

  f1['key']['str'] = 'Sample'#取出數(shù)據(jù)的時候也只需要直接用key獲取即可,但是如果key不存在會報錯

  print(f1['key'])

  f1 = shelve.open('shelve_file',writeback=True)#如果想將修改后的結(jié)果同步到文件需要修改參數(shù)

  f1['key']['str'] = 'Sample'

  print(f1['key'])

  方法使用

  使用writeback以后,會增加額外的內(nèi)存消耗

 

 

來源:博客園

您還未登錄,請先登錄

熱門帖子

最新帖子

?