python學習筆記day5——常用模塊學習

来源:http://www.cnblogs.com/zingp/archive/2016/08/26/5810168.html
-Advertisement-
Play Games

一、主要內容 二、具體內容 1.模塊 a.定義:本質就是.py結尾的python文件,邏輯上組織python代碼,實現某種功能。例:文件名test.py-->模塊名test。 b.導入方法:imort moduname from mdname import * from mdname import ...


一、主要內容

  1. 模塊介紹
  2. time &datetime模塊
  3. random
  4. os
  5. sys
  6. shutil
  7. json & picle
  8. shelve
  9. xml處理
  10. yaml處理
  11. configparser
  12. hashlib
  13. subprocess
  14. logging模塊
  15. re正則表達式

二、具體內容

1.模塊

a.定義:本質就是.py結尾的python文件,邏輯上組織python代碼,實現某種功能。例:文件名test.py-->模塊名test。

b.導入方法:imort moduname

                from mdname import *

                from mdname import name as rename

                ...

c.import本質(路徑搜索和搜索路徑)

d.導入優化:from mdname import test

e.模塊分類:標準庫內的模塊、開源模塊、自定義模塊。

2.time &datetime模塊

    在Python中,通常有這幾種方式來表示時間:1)時間戳 2)格式化的時間字元串 3)元組(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()。

 

 1 #_*_coding:utf-8_*_
 2 import time
 3  
 4  
 5 # print(time.clock()) #返回處理器時間,3.3開始已廢棄 , 改成了time.process_time()測量處理器運算時間,不包括sleep時間,不穩定,mac上測不出來
 6 # print(time.altzone)  #返回與utc時間的時間差,以秒計算\
 7 # print(time.asctime()) #返回時間格式"Fri Aug 19 11:14:16 2016",
 8 # print(time.localtime()) #返回本地時間 的struct time對象格式
 9 # print(time.gmtime(time.time()-800000)) #返回utc時間的struc時間對象格式
10  
11 # print(time.asctime(time.localtime())) #返回時間格式"Fri Aug 19 11:14:16 2016",
12 #print(time.ctime()) #返回Fri Aug 19 12:38:29 2016 格式, 同上
13  
14  
15  
16 # 日期字元串 轉成  時間戳
17 # string_2_struct = time.strptime("2016/05/22","%Y/%m/%d") #將 日期字元串 轉成 struct時間對象格式
18 # print(string_2_struct)
19 # #
20 # struct_2_stamp = time.mktime(string_2_struct) #將struct時間對象轉成時間戳
21 # print(struct_2_stamp)
22  
23  
24  
25 #將時間戳轉為字元串格式
26 # print(time.gmtime(time.time()-86640)) #將utc時間戳轉換成struct_time格式
27 # print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #將utc struct_time格式轉成指定的字元串格式
28  
29 #時間加減
30 import datetime
31  
32 # print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
33 #print(datetime.date.fromtimestamp(time.time()) )  # 時間戳直接轉成日期格式 2016-08-19
34 # print(datetime.datetime.now() )
35 # print(datetime.datetime.now() + datetime.timedelta(3)) #當前時間+3天
36 # print(datetime.datetime.now() + datetime.timedelta(-3)) #當前時間-3天
37 # print(datetime.datetime.now() + datetime.timedelta(hours=3)) #當前時間+3小時
38 # print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #當前時間+30分
39  
40  
41 #
42 # c_time  = datetime.datetime.now()
43 # print(c_time.replace(minute=3,hour=2)) #時間替換

 對應格式:

 1 %a    本地(locale)簡化星期名稱    
 2 %A    本地完整星期名稱    
 3 %b    本地簡化月份名稱    
 4 %B    本地完整月份名稱    
 5 %c    本地相應的日期和時間表示    
 6 %d    一個月中的第幾天(01 - 31 7 %H    一天中的第幾個小時(24小時制,00 - 23 8 %I    第幾個小時(12小時制,01 - 12 9 %j    一年中的第幾天(001 - 36610 %m    月份(01 - 1211 %M    分鐘數(00 - 5912 %p    本地am或者pm的相應符       
13 %S    秒(01 - 6114 %U    一年中的星期數。(00 - 53星期天是一個星期的開始。)第一個星期天之前的所有天數都放在第0周。        
15 %w    一個星期中的第幾天(0 - 6,0是星期天)      
16 %W    和%U基本相同,不同的是%W以星期一為一個星期的開始。    
17 %x    本地相應日期    
18 %X    本地相應時間    
19 %y    去掉世紀的年份(00 - 9920 %Y    完整的年份    
21 %Z    時區的名字(如果不存在為空字元)    
22 %%    ‘%’字元
格式對應

 

3.random模塊

 1 #!/usr/bin/env python
 2 #_*_encoding: utf-8_*_
 3 import random
 4 print (random.random())  #0.6445010863311293  
 5 #random.random()用於生成一個0到1的隨機符點數: 0 <= n < 1.0
 6 print (random.randint(1,7)) #4
 7 #random.randint()的函數原型為:random.randint(a, b),用於生成一個指定範圍內的整數。
 8 # 其中參數a是下限,參數b是上限,生成的隨機數n: a <= n <= b
 9 print (random.randrange(1,10)) #5
10 #random.randrange的函數原型為:random.randrange([start], stop[, step]),
11 # 從指定範圍內,按指定基數遞增的集合中 獲取一個隨機數。如:random.randrange(10, 100, 2),
12 # 結果相當於從[10, 12, 14, 16, ... 96, 98]序列中獲取一個隨機數。
13 # random.randrange(10, 100, 2)在結果上與 random.choice(range(10, 100, 2) 等效。
14 print(random.choice('liukuni')) #i
15 #random.choice從序列中獲取一個隨機元素。
16 # 其函數原型為:random.choice(sequence)。參數sequence表示一個有序類型。
17 # 這裡要說明一下:sequence在python不是一種特定的類型,而是泛指一系列的類型。
18 # list, tuple, 字元串都屬於sequence。有關sequence可以查看python手冊數據模型這一章。
19 # 下麵是使用choice的一些例子:
20 print(random.choice("學習Python"))#
21 print(random.choice(["JGood","is","a","handsome","boy"]))  #List
22 print(random.choice(("Tuple","List","Dict")))   #List
23 print(random.sample([1,2,3,4,5],3))    #[1, 2, 5]
24 #random.sample的函數原型為:random.sample(sequence, k),從指定序列中隨機獲取指定長度的片斷。sample函數不會修改原有序列。
View Code

實際應用:

 1 #!/usr/bin/env python
 2 # encoding: utf-8
 3 import random
 4 import string
 5 #隨機整數:
 6 print( random.randint(0,99))  #70
 7  
 8 #隨機選取0到100間的偶數:
 9 print(random.randrange(0, 101, 2)) #4
10  
11 #隨機浮點數:
12 print( random.random()) #0.2746445568079129
13 print(random.uniform(1, 10)) #9.887001463194844
14  
15 #隨機字元:
16 print(random.choice('abcdefg&#%^*f')) #f
17  
18 #多個字元中選取特定數量的字元:
19 print(random.sample('abcdefghij',3)) #['f', 'h', 'd']
20  
21 #隨機選取字元串:
22 print( random.choice ( ['apple', 'pear', 'peach', 'orange', 'lemon'] )) #apple
23 #洗牌#
24 items = [1,2,3,4,5,6,7]
25 print(items) #[1, 2, 3, 4, 5, 6, 7]
26 random.shuffle(items)
27 print(items) #[1, 4, 7, 2, 5, 3, 6]
View Code

隨機生成驗證碼:

 1 # _*_ coding:utf-8 _*_
 2 __author__ = "ZingP"
 3 
 4 import random
 5 security_code = ''
 6 for i in range(0,5):
 7     j = random.randrange(0,5)
 8     if i == j:
 9         ptm = random.randint(0,9)
10     else:
11         ptm = chr(random.randint(97,122))
12     security_code += str(ptm)
13 print('security code:',security_code )
View Code

4.os

提供對操作系統進行調用的介面:

 1 os.getcwd() 獲取當前工作目錄,即當前python腳本工作的目錄路徑
 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以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素
23 os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
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所指向的文件或者目錄的最後修改時間
View Code

5.sys

1 sys.argv           命令行參數List,第一個元素是程式本身路徑
2 sys.exit(n)        退出程式,正常退出時exit(0)
3 sys.version        獲取Python解釋程式的版本信息
4 sys.maxint         最大的Int值
5 sys.path           返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變數的值
6 sys.platform       返回操作系統平臺名稱
7 sys.stdout.write('please:')
8 val = sys.stdin.readline()[:-1]
View Code

6.shutilmo模塊

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

shutil.copyfileobj(fsrc, fdst[, length])
將文件內容拷貝到另一個文件中,可以部分內容

 View Code

shutil.copyfile(src, dst)
拷貝文件

 View Code

shutil.copymode(src, dst)
僅拷貝許可權。內容、組、用戶均不變

 View Code

shutil.copystat(src, dst)
拷貝狀態的信息,包括:mode bits, atime, mtime, flags

 View Code

shutil.copy(src, dst)
拷貝文件和許可權

 View Code

shutil.copy2(src, dst)
拷貝文件和狀態信息

 View Code

shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
遞歸的去拷貝文件

例如:copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))

 View Code

shutil.rmtree(path[, ignore_errors[, onerror]])
遞歸的去刪除文件

 View Code

shutil.move(src, dst)
遞歸的去移動文件

 View Code

shutil.make_archive(base_name, format,...)

創建壓縮包並返迴文件路徑,例如:zip、tar

  • base_name: 壓縮包的文件名,也可以是壓縮包的路徑。只是文件名時,則保存至當前目錄,否則保存至指定路徑,
    如:www                        =>保存至當前路徑
    如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
  • format: 壓縮包種類,“zip”, “tar”, “bztar”,“gztar”
  • root_dir: 要壓縮的文件夾路徑(預設當前目錄)
  • owner: 用戶,預設當前用戶
  • group: 組,預設當前組
  • logger: 用於記錄日誌,通常是logging.Logger對象

更多:http://www.cnblogs.com/wupeiqi/articles/4963027.html

7.json & pickle模塊

用於序列化的兩個模塊

  • json,用於字元串 和 python數據類型間進行轉換

  • pickle,用於python特有的類型 和 python的數據類型間進行轉換

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

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

 1 import pickle
 2 a = {'a':'bc','c':'hello','d':123,'e':'world'}
 3 f = open('a.pkl','wb')
 4 pickle.dump(a,f)#如果跨語言平臺使用json
 5 f.close()
 6 '''
 7 >>> a = {'a':'bc','c':'hello','d':123,'e':'world'}
 8 >>> import json
 9 >>> json.dumps(a)
10 '{"a": "bc", "d": 123, "e": "world", "c": "hello"}'
11 >>> b = json.dumps(a)
12 >>> json.loads(b)
13 {'a': 'bc', 'd': 123, 'e': 'world', 'c': 'hello'}
14 '''
View Code
1 import pickle
2 f = open('a.pkl','rb')
3 acc = pickle.load(f)
4 print(acc)
View Code

8.shelve

shelve模塊是一個簡單的k,v將記憶體數據通過文件持久化的模塊,可以持久化任何pickle可支持的python數據格式

 1 import shelve
 2   
 3 d = shelve.open('shelve_test') #打開一個文件 
 4   
 5 class Test(object):
 6     def __init__(self,n):
 7         self.n = n
 8   
 9   
10 t = Test(123)  
11 t2 = Test(123334)
12   
13 name = ["alex","rain","test"] 
14 d["test"] = name #持久化列表
15 d["t1"] = t      #持久化類
16 d["t2"] = t2
17   
18 d.close()
View Code

 

9.xml處理
10.yaml處理
11.configparser
12.hashlib
13.subprocess
14.logging模塊
15.re正則表達式
16.glob模塊

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 學Kotlin其實要看:http://kotlinlang.org/docs/kotlin docs.pdf 線上版是不完整的!!!少了一些章節,會有點難看懂後面的文檔。 我選擇了WordPress里的錯誤消息管理類wp error.php為對象,沒有依賴其他具體場景和類,所以比較適合移植和對比。 ...
  • ASA的美國總統競選 在這個大選之年,美國統計協會(ASA)將學生競賽和總統選舉放在一起,將學生預測誰是2016年總統大選的贏家準確的百分比作為比賽點。詳情見: http://thisisstatistics.org/electionprediction2016/ 獲取數據 互聯網上有很多公開的民調 ...
  • ...
  • 歐拉函數,就是歐拉發現的一個關於求素數的的公式,然後我們編個函數實現這個公式。 歐拉發現求小於等於n的正整數中有多少個數與n互質可以用這個公式: euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn為x的所有素因數,x是不為0 ...
  • 本文為flask-wtf中的幾乎所有常用API實現,併在實例中運用flask-wtf包,同時包含了作者在學習開發階段的一些心得體會。 ...
  • Cleaning Shifts Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18151 Accepted: 4620 Description Farmer John is assigning some of his N (1 ...
  • 前言:由於初次使用IDEA,所以很多配置都不是非常熟悉,經過一下午慢慢熟悉和同事的幫助,終於有所斬獲,現在我把這個總結寫出來,希望能夠幫助初次使用的java工程師。 1:下載和安裝 下載地址:https://www.jetbrains.com/idea/ 安裝教程請參考http://jingyan. ...
  • ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...