1. python 常用的系統函數有哪些
1.常用內置函數:(不用import就可以直接使用)
help(obj) 在線幫助, obj可是任何類型
callable(obj) 查看一個obj是不是可以像函數一樣調用
repr(obj) 得到obj的表示字元串,可以利用這個字元串eval重建該對象的一個拷貝
eval_r(str) 表示合法的python表達式,返回這個表達式
dir(obj) 查看obj的name space中可見的name
hasattr(obj,name) 查看一個obj的name space中是否有name
getattr(obj,name) 得到一個obj的name space中的一個name
setattr(obj,name,value) 為一個obj的name space中的一個name指向vale這個object
delattr(obj,name) 從obj的name space中刪除一個name
vars(obj) 返回一個object的name space。用dictionary表示
locals() 返回一個局部name space,用dictionary表示
globals() 返回一個全局name space,用dictionary表示
type(obj) 查看一個obj的類型
isinstance(obj,cls) 查看obj是不是cls的instance
issubclass(subcls,supcls) 查看subcls是不是supcls的子類
類型轉換函數
chr(i) 把一個ASCII數值,變成字元
ord(i) 把一個字元或者unicode字元,變成ASCII數值
oct(x) 把整數x變成八進製表示的字元串
hex(x) 把整數x變成十六進製表示的字元串
str(obj) 得到obj的字元串描述
list(seq) 把一個sequence轉換成一個list
tuple(seq) 把一個sequence轉換成一個tuple
dict(),dict(list) 轉換成一個dictionary
int(x) 轉換成一個integer
long(x) 轉換成一個long interger
float(x) 轉換成一個浮點數
complex(x) 轉換成復數
max(...) 求最大值
min(...) 求最小值
用於執行程序的內置函數
complie 如果一段代碼經常要使用,那麼先編譯,再運行會更快。
2.和操作系統相關的調用
系統相關的信息模塊 import sys
sys.argv是一個list,包含所有的命令行參數.
sys.stdout sys.stdin sys.stderr 分別表示標准輸入輸出,錯誤輸出的文件對象.
sys.stdin.readline() 從標准輸入讀一行 sys.stdout.write("a") 屏幕輸出a
sys.exit(exit_code) 退出程序
sys.moles 是一個dictionary,表示系統中所有可用的mole
sys.platform 得到運行的操作系統環境
sys.path 是一個list,指明所有查找mole,package的路徑.
操作系統相關的調用和操作 import os
os.environ 一個dictionary 包含環境變數的映射關系 os.environ["HOME"] 可以得到環境變數HOME的值
os.chdir(dir) 改變當前目錄 os.chdir('d:\\outlook') 注意windows下用到轉義
os.getcwd() 得到當前目錄
os.getegid() 得到有效組id os.getgid() 得到組id
os.getuid() 得到用戶id os.geteuid() 得到有效用戶id
os.setegid os.setegid() os.seteuid() os.setuid()
os.getgruops() 得到用戶組名稱列表
os.getlogin() 得到用戶登錄名稱
os.getenv 得到環境變數
os.putenv 設置環境變數
os.umask 設置umask
os.system(cmd) 利用系統調用,運行cmd命令
操作舉例:
os.mkdir('/tmp/xx') os.system("echo 'hello' > /tmp/xx/a.txt") os.listdir('/tmp/xx')
os.rename('/tmp/xx/a.txt','/tmp/xx/b.txt') os.remove('/tmp/xx/b.txt') os.rmdir('/tmp/xx')
用python編寫一個簡單的shell
#!/usr/bin/python
import os, sys
cmd = sys.stdin.readline()
while cmd:
os.system(cmd)
cmd = sys.stdin.readline()
用os.path編寫平台無關的程序
os.path.abspath("1.txt") == os.path.join(os.getcwd(), "1.txt")
os.path.split(os.getcwd()) 用於分開一個目錄名稱中的目錄部分和文件名稱部分。
os.path.join(os.getcwd(), os.pardir, 'a', 'a.doc') 全成路徑名稱.
os.pardir 表示當前平台下上一級目錄的字元 ..
os.path.getctime("/root/1.txt") 返回1.txt的ctime(創建時間)時間戳
os.path.exists(os.getcwd()) 判斷文件是否存在
os.path.expanser('~/dir') 把~擴展成用戶根目錄
os.path.expandvars('$PATH') 擴展環境變數PATH
os.path.isfile(os.getcwd()) 判斷是否是文件名,1是0否
os.path.isdir('c:\Python26\temp') 判斷是否是目錄,1是0否
os.path.islink('/home/huaying/111.sql') 是否是符號連接 windows下不可用
os.path.ismout(os.getcwd()) 是否是文件系統安裝點 windows下不可用
os.path.samefile(os.getcwd(), '/home/huaying') 看看兩個文件名是不是指的是同一個文件
os.path.walk('/home/huaying', test_fun, "a.c")
遍歷/home/huaying下所有子目錄包括本目錄,對於每個目錄都會調用函數test_fun.
例:在某個目錄中,和他所有的子目錄中查找名稱是a.c的文件或目錄。
def test_fun(filename, dirname, names): //filename即是walk中的a.c dirname是訪問的目錄名稱
if filename in names: //names是一個list,包含dirname目錄下的所有內容
print os.path.join(dirname, filename)
os.path.walk('/home/huaying', test_fun, "a.c")
文件操作
打開文件
f = open("filename", "r") r只讀 w寫 rw讀寫 rb讀二進制 wb寫二進制 w+寫追加
讀寫文件
f.write("a") f.write(str) 寫一字元串 f.writeline() f.readlines() 與下read類同
f.read() 全讀出來 f.read(size) 表示從文件中讀取size個字元
f.readline() 讀一行,到文件結尾,返回空串. f.readlines() 讀取全部,返回一個list. list每個元素表示一行,包含"\n"\
f.tell() 返回當前文件讀取位置
f.seek(off, where) 定位文件讀寫位置. off表示偏移量,正數向文件尾移動,負數表示向開頭移動。
where為0表示從開始算起,1表示從當前位置算,2表示從結尾算.
f.flush() 刷新緩存
關閉文件
f.close()
regular expression 正則表達式 import re
簡單的regexp
p = re.compile("abc") if p.match("abc") : print "match"
上例中首先生成一個pattern(模式),如果和某個字元串匹配,就返回一個match object
除某些特殊字元metacharacter元字元,大多數字元都和自身匹配。
這些特殊字元是 。^ $ * + ? { [ ] \ | ( )
字元集合(用[]表示)
列出字元,如[abc]表示匹配a或b或c,大多數metacharacter在[]中只表示和本身匹配。例:
a = ".^$*+?{\\|()" 大多數metachar在[]中都和本身匹配,但"^[]\"不同
p = re.compile("["+a+"]")
for i in a:
if p.match(i):
print "[%s] is match" %i
else:
print "[%s] is not match" %i
在[]中包含[]本身,表示"["或者"]"匹配.用
和
表示.
^出現在[]的開頭,表示取反.[^abc]表示除了a,b,c之外的所有字元。^沒有出現在開頭,即於身身匹配。
-可表示範圍.[a-zA-Z]匹配任何一個英文字母。[0-9]匹配任何數字。
\在[]中的妙用。
\d [0-9]
\D [^0-9]
\s [ \t\n\r\f\v]
\S [^ \t\n\r\f\v]
\w [a-zA-Z0-9_]
\W [^a-zA-Z0-9_]
\t 表示和tab匹配, 其他的都和字元串的表示法一致
\x20 表示和十六進制ascii 0x20匹配
有了\,可以在[]中表示任何字元。註:單獨的一個"."如果沒有出現[]中,表示出了換行\n以外的匹配任何字元,類似[^\n].
regexp的重復
{m,n}表示出現m個以上(含m個),n個以下(含n個). 如ab{1,3}c和abc,abbc,abbbc匹配,不會與ac,abbbc匹配。
m是下界,n是上界。m省略表下界是0,n省略,表上界無限大。
*表示{,} +表示{1,} ?表示{0,1}
最大匹配和最小匹配 python都是最大匹配,如果要最小匹配,在*,+,?,{m,n}後面加一個?.
match object的end可以得到匹配的最後一個字元的位置。
re.compile("a*").match('aaaa').end() 4 最大匹配
re.compile("a*?").match('aaaa').end() 0 最小匹配
使用原始字元串
字元串表示方法中用\\表示字元\.大量使用影響可讀性。
解決方法:在字元串前面加一個r表示raw格式。
a = r"\a" print a 結果是\a
a = r"\"a" print a 結果是\"a
使用re模塊
先用re.compile得到一個RegexObject 表示一個regexp
後用pattern的match,search的方法,得到MatchObject
再用match object得到匹配的位置,匹配的字元串等信息
RegxObject常用函數:
>>> re.compile("a").match("abab") 如果abab的開頭和re.compile("a")匹配,得到MatchObject
<_sre.SRE_Match object at 0x81d43c8>
>>> print re.compile("a").match("bbab")
None 註:從str的開頭開始匹配
>>> re.compile("a").search("abab") 在abab中搜索第一個和re_obj匹配的部分
<_sre.SRE_Match object at 0x81d43c8>
>>> print re.compile("a").search("bbab")
<_sre.SRE_Match object at 0x8184e18> 和match()不同,不必從開頭匹配
re_obj.findall(str) 返回str中搜索所有和re_obj匹配的部分.
返回一個tuple,其中元素是匹配的字元串.
MatchObject的常用函數
m.start() 返回起始位置,m.end()返回結束位置(不包含該位置的字元).
m.span() 返回一個tuple表示(m.start(), m.end())
m.pos(), m.endpos(), m.re(), m.string()
m.re().search(m.string(), m.pos(), m.endpos()) 會得到m本身
m.finditer()可以返回一個iterator,用來遍歷所有找到的MatchObject.
for m in re.compile("[ab]").finditer("tatbxaxb"):
print m.span()
高級regexp
| 表示聯合多個regexp. A B兩個regexp,A|B表示和A匹配或者跟B匹配.
^ 表示只匹配一行的開始行首,^只有在開頭才有此特殊意義。
$ 表示只匹配一行的結尾
\A 表示只匹配第一行字元串的開頭 ^匹配每一行的行首
\Z 表示只匹配行一行字元串的結尾 $匹配第一行的行尾
\b 只匹配詞的邊界 例:\binfo\b 只會匹配"info" 不會匹配information
\B 表示匹配非單詞邊界
示例如下:
>>> print re.compile(r"\binfo\b").match("info ") #使用raw格式 \b表示單詞邊界
<_sre.SRE_Match object at 0x817aa98>
>>> print re.compile("\binfo\b").match("info ") #沒有使用raw \b表示退格符號
None
>>> print re.compile("\binfo\b").match("\binfo\b ")
<_sre.SRE_Match object at 0x8174948>
分組(Group) 示例:re.compile("(a(b)c)d").match("abcd").groups() ('abc', 'b')
#!/usr/local/bin/python
import re
x = """
name: Charles
Address: BUPT
name: Ann
Address: BUPT
"""
#p = re.compile(r"^name:(.*)\n^Address:(.*)\n", re.M)
p = re.compile(r"^name:(?P.*)\n^Address:(?P.*)\n", re.M)
for m in p.finditer(x):
print m.span()
print "here is your friends list"
print "%s, %s"%m.groups()
Compile Flag
用re.compile得到RegxObject時,可以有一些flag用來調整RegxObject的詳細特徵.
DOTALL, S 讓.匹配任意字元,包括換行符\n
IGNORECASE, I 忽略大小寫
LOCALES, L 讓\w \W \b \B和當前的locale一致
MULTILINE, M 多行模式,隻影響^和$(參見上例)
VERBOSE, X verbose模式
2. python常用到哪些庫
Python作為一個設計優秀的程序語言,現在已廣泛應用於各種領域,依靠其強大的第三方類庫,Python在各個領域都能發揮巨大的作用。
下面我們就來看一下python中常用到的庫:
數值計算庫:
1. NumPy
支持多維數組與矩陣運算,也針對數組運算提供大量的數學函數庫。通常與SciPy和Matplotlib一起使用,支持比Python更多種類的數值類型,其中定義的最重要的對象是稱為ndarray的n維數組類型,用於描述相同類型的元素集合,可以使用基於0的索引訪問集合中元素。
2. SciPy
在NumPy庫的基礎上增加了眾多的數學、科學及工程計算中常用的庫函數,如線性代數、常微分方程數值求解、信號處理、圖像處理、稀疏矩陣等,可進行插值處理、信號濾波,以及使用C語言加速計算。
3. Pandas
基於NumPy的一種工具,為解決數據分析任務而生。納入大量庫和一些標準的數據模型,提供高效地操作大型數據集所需的工具及大量的能快速便捷處理數據的函數和方法,為時間序列分析提供很好的支持,提供多種數據結構,如Series、Time-Series、DataFrame和Panel。
數據可視化庫:
4. Matplotlib
第一個Python可視化庫,有許多別的程序庫都是建立在其基礎上或者直接調用該庫,可以很方便地得到數據的大致信息,功能非常強大,但也非常復雜。
5. Seaborn
利用了Matplotlib,用簡潔的代碼來製作好看的圖表。與Matplotlib最大的區別為默認繪圖風格和色彩搭配都具有現代美感。
6. ggplot
基於R的一個作圖庫ggplot2,同時利用了源於《圖像語法》(The Grammar of Graphics)中的概念,允許疊加不同的圖層來完成一幅圖,並不適用於製作非常個性化的圖像,為操作的簡潔度而犧牲了圖像的復雜度。
7. Bokeh
跟ggplot一樣,Bokeh也基於《圖形語法》的概念。與ggplot不同之處為它完全基於Python而不是從R處引用。長處在於能用於製作可交互、可直接用於網路的圖表。圖表可以輸出為JSON對象、HTML文檔或者可交互的網路應用。
8. Plotly
可以通過Python notebook使用,與Bokeh一樣致力於交互圖表的製作,但提供在別的庫中幾乎沒有的幾種圖表類型,如等值線圖、樹形圖和三維圖表。
9. pygal
與Bokeh和Plotly一樣,提供可直接嵌入網路瀏覽器的可交互圖像。與其他兩者的主要區別在於可將圖表輸出為SVG格式,所有的圖表都被封裝成方法,且默認的風格也很漂亮,用幾行代碼就可以很容易地製作出漂亮的圖表。
10. geoplotlib
用於製作地圖和地理相關數據的工具箱。可用來製作多種地圖,比如等值區域圖、熱度圖、點密度圖。必須安裝Pyglet(一個面向對象編程介面)方可使用。
11. missingno
用圖像的方式快速評估數據缺失的情況,可根據數據的完整度對數據進行排序或過濾,或者根據熱度圖或樹狀圖對數據進行修正。
web開發庫:
12. Django
一個高級的Python Web框架,支持快速開發,提供從模板引擎到ORM所需的一切東西,使用該庫構建App時,必須遵循Django的方式。
13. Socket
一個套接字通訊底層庫,用於在伺服器和客戶端間建立TCP或UDP連接,通過連接發送請求與響應。
14. Flask
一個基於Werkzeug、Jinja 2的Python輕量級框架(microframework),默認配備Jinja模板引擎,也包含其他模板引擎或ORM供選擇,適合用來編寫API服務(RESTful rervices)。
15. Twisted
一個使用Python實現的基於事件驅動的網路引擎框架,建立在deferred object之上,一個通過非同步架構實現的高性能的引擎,不適用於編寫常規的Web Apps,更適用於底層網路。
資料庫管理:
16. MySQL-python
又稱MySQLdb,是Python連接MySQL最流行的一個驅動,很多框架也基於此庫進行開發。只支持Python 2.x,且安裝時有許多前置條件。由於該庫基於C語言開發,在Windows平台上的安裝非常不友好,經常出現失敗的情況,現在基本不推薦使用,取代品為衍生版本。
17. mysqlclient
完全兼容MySQLdb,同時支持Python 3.x,是Django ORM的依賴工具,可使用原生SQL來操作資料庫,安裝方式與MySQLdb一致。
18. PyMySQL
純Python實現的驅動,速度比MySQLdb慢,最大的特點為安裝方式簡潔,同時也兼容MySQL-python。
19. SQLAlchemy
一種既支持原生SQL,又支持ORM的工具。ORM是Python對象與資料庫關系表的一種映射關系,可有效提高寫代碼的速度,同時兼容多種資料庫系統,如SQLite、MySQL、PostgreSQL,代價為性能上的一些損失。
自動化運維:
20. jumpsever跳板機
一種由Python編寫的開源跳板機(堡壘機)系統,實現了跳板機的基本功能,包含認證、授權和審計,集成了Ansible、批量命令等。
支持WebTerminal Bootstrap編寫,界面美觀,自動收集硬體信息,支持錄像回放、命令搜索、實時監控、批量上傳下載等功能,基於SSH協議進行管理,客戶端無須安裝agent。主要用於解決可視化安全管理,因完全開源,容易再次開發。
21. Mage分布式監控系統
一種用Python開發的自動化監控系統,可監控常用系統服務、應用、網路設備,可在一台主機上監控多個不同服務,不同服務的監控間隔可以不同,同一個服務在不同主機上的監控間隔、報警閾值可以不同,並提供數據可視化界面。
22. Mage的CMDB
一種用Python開發的硬體管理系統,包含採集硬體數據、API、頁面管理3部分功能,主要用於自動化管理筆記本、路由器等常見設備的日常使用。由伺服器的客戶端採集硬體數據,將硬體信息發送至API,API負責將獲取的數據保存至資料庫中,後台管理程序負責對伺服器信息進行配置和展示。
23. 任務調度系統
一種由Python開發的任務調度系統,主要用於自動化地將一個服務進程分布到其他多個機器的多個進程中,一個服務進程可作為調度者依靠網路通信完成這一工作。
24. Python運維流程系統
一種使用Python語言編寫的調度和監控工作流的平台,內部用於創建、監控和調整數據管道。允許工作流開發人員輕松創建、維護和周期性地調度運行工作流,包括了如數據存儲、增長分析、Email發送、A/B測試等諸多跨多部門的用例。
GUI編程:
25. Tkinter
一個Python的標准GUI庫,可以快速地創建GUI應用程序,可以在大多數的UNIX平台下使用,同樣可以應用在Windows和Macintosh系統中,Tkinter 8.0的後續版本可以實現本地窗口風格,並良好地運行在絕大多數平台中。
26. wxPython
一款開源軟體跨平台GUI庫wxWidgets的Python封裝和Python模塊,是Python語言的一套優秀的GUI圖形庫,允許程序員很方便地創建完整的、功能健全的GUI用戶界面。
27. PyQt
一個創建GUI應用程序的工具庫,是Python編程語言和Qt的成功融合,可以運行在所有主要操作系統上,包括UNIX、Windows和Mac。PyQt採用雙許可證,開發人員可以選擇GPL和商業許可,從PyQt的版本4開始,GPL許可證可用於所有支持的平台。
28. PySide
一個跨平台的應用程式框架Qt的Python綁定版本,提供與PyQt類似的功能,並相容API,但與PyQt不同處為其使用LGPL授權。
更多Python知識請關注Python自學網。
3. Python字典中幾個常用函數總結
1、get() 返回指定鍵的值,如果值不在字典中返回default值。
語法:dict.get(key,default=None)
參數:
key 字典中要查找的鍵。
default 如果指定鍵的值不存在時,返回該默認值值。
例:
dict={'Name':'alex','Age':21}
print("Name is:%s"% dict.get('Name')+"\n"+ "Age is:%d"% dict.get('Age'))
顯示結果為:
Name is:alex
Age is:21
2、update() 將一個字典中的值更新到另一個字典中。
語法:dict.update(dict2)
參數:
dict2 添加到指定字典dict里的字典。
例:
dict={'Name':'alex','Age':21}
dict2={'Sex':'female'}
dict.update(dict2)
print("Value is %s" % dict)
顯示結果為:
Value is {'Name': 'alex', 'Age': 21, 'Sex': 'female'}
4. python常用函數包有哪些
一些python常用函數包:
1、Urllib3
Urllib3是一個 Python 的 HTTP 客戶端,它擁有 Python 標准庫中缺少的許多功能:
線程安全
連接池
客戶端 SSL/TLS 驗證
使用分段編碼上傳文件
用來重試請求和處理 HTTP 重定向的助手
支持 gzip 和 deflate 編碼
HTTP 和 SOCKS 的代理支持
2、Six
six 是一個是 Python 2 和 3 的兼容性庫。這個項目旨在支持可同時運行在 Python 2 和 3 上的代碼庫。它提供了許多可簡化 Python 2 和 3 之間語法差異的函數。
3、botocore、boto3、s3transfer、awscli
Botocore是 AWS 的底層介面。Botocore是 Boto3 庫(#22)的基礎,後者讓你可以使用 Amazon S3 和 Amazon EC2 一類的服務。Botocore 還是 AWS-CLI 的基礎,後者為 AWS 提供統一的命令行界面。
S3transfer(#7)是用於管理 Amazon S3 傳輸的 Python 庫。它正在積極開發中,其介紹頁面不推薦人們現在使用,或者至少等版本固定下來再用,因為其 API 可能發生變化,在次要版本之間都可能更改。Boto3、AWS-CLI和其他許多項目都依賴s3transfer。
4、Pip
pip是「Pip Installs Packages」的首字母遞歸縮寫。
pip很容易使用。要安裝一個包只需pip install <package name>即可,而刪除包只需pip uninstall <package name>即可。
最大優點之一是它可以獲取包列表,通常以requirements.txt文件的形式獲取。該文件能選擇包含所需版本的詳細規范。大多數 Python 項目都包含這樣的文件。
如果結合使用pip與virtualenv(列表中的 #57),就可以創建可預測的隔離環境,同時不會干擾底層系統,反之亦然。
5、Python-dateutil
python-dateutil模塊提供了對標准datetime模塊的強大擴展。我的經驗是,常規的Python datetime缺少哪些功能,python-dateutil就能補足那一塊。
6、Requests
Requests建立在我們的 #1 庫——urllib3基礎上。它讓 Web 請求變得非常簡單。相比urllib3來說,很多人更喜歡這個包。而且使用它的最終用戶可能也比urllib3更多。後者更偏底層,並且考慮到它對內部的控制級別,它一般是作為其他項目的依賴項。
7、Certifi
近年來,幾乎所有網站都轉向 SSL,你可以通過地址欄中的小鎖符號來識別它。加了小鎖意味著與該站點的通信是安全和加密的,能防止竊聽行為。
8、Idna
根據其 PyPI 頁面,idna提供了「對 RFC5891 中指定的應用程序中國際化域名(IDNA)協議的支持。」
IDNA的核心是兩個函數:ToASCII和ToUnicode。ToASCII會將國際 Unicode 域轉換為 ASCII 字元串。ToUnicode則逆轉該過程。在IDNA包中,這些函數稱為idna.encode()和idna.decode()
9、PyYAML
YAML是一種數據序列化格式。它的設計宗旨是讓人類和計算機都能很容易地閱讀代碼——人類很容易讀寫它的內容,計算機也可以解析它。
PyYAML是 Python 的YAML解析器和發射器,這意味著它可以讀寫YAML。它會把任何 Python 對象寫成YAML:列表、字典,甚至是類實例都包括在內。
10、Pyasn1
像上面的IDNA一樣,這個項目也非常有用:
ASN.1 類型和 DER/BER/CER 編碼(X.208)的純 Python 實現
所幸這個已有數十年歷史的標准有很多信息可用。ASN.1是 Abstract Syntax Notation One 的縮寫,它就像是數據序列化的教父。它來自電信行業。也許你知道協議緩沖區或 Apache Thrift?這就是它們的 1984 年版本。
11、Docutils
Docutils是一個模塊化系統,用來將純文本文檔處理為很多有用的格式,例如 HTML、XML 和 LaTeX 等。Docutils能讀取reStructuredText格式的純文本文檔,這種格式是類似於 MarkDown 的易讀標記語法。
12、Chardet
你可以用chardet模塊來檢測文件或數據流的字元集。比如說,需要分析大量隨機文本時,這會很有用。但你也可以在處理遠程下載的數據,但不知道用的是什麼字元集時使用它。
13、RSA
rsa包是一個純 Python 的 RSA 實現。它支持:
加密和解密
簽名和驗證簽名
根據 PKCS#1 1.5 版生成密鑰
它既可以用作 Python 庫,也能在命令行中使用。
14、Jmespath
JMESPath,發音為「James path」,使 Python 中的 JSON 更容易使用。它允許你聲明性地指定如何從 JSON 文檔中提取元素。
15、Setuptools
它是用於創建 Python 包的工具。不過,其文檔很糟糕。它沒有清晰描述它的用途,並且文檔中包含無效鏈接。最好的信息源是這個站點,特別是這個創建 Python 包的指南。
16、Pytz
像dateutils一樣,這個庫可幫助你處理日期和時間。有時候,時區處理起來可能很麻煩。幸好有這樣的包,可以讓事情變得簡單些。
17、Futures
從 Python 3.2 開始,python 提供current.futures模塊,可幫助你實現非同步執行。futures 包是該庫適用於 Python 2 的 backport。它不適用於 Python3 用戶,因為 Python 3 原生提供了該模塊。
18、Colorama
使用 Colorama,你可以為終端添加一些顏色:
更多Python知識請關注Python自學網
5. 最常用的幾個python庫
Python常用庫大全,看看有沒有你需要的。
環境管理
管理 Python 版本和環境的工具
p – 非常簡單的互動式 python 版本管理工具。
pyenv – 簡單的 Python 版本管理工具。
Vex – 可以在虛擬環境中執行命令。
virtualenv – 創建獨立 Python 環境的工具。
virtualenvwrapper- virtualenv 的一組擴展。
包管理
管理包和依賴的工具。
pip – Python 包和依賴關系管理工具。
pip-tools – 保證 Python 包依賴關系更新的一組工具。
conda – 跨平台,Python 二進制包管理工具。
Curdling – 管理 Python 包的命令行工具。
wheel – Python 分發的新標准,意在取代 eggs。
包倉庫
本地 PyPI 倉庫服務和代理。
warehouse – 下一代 PyPI。
Warehousebandersnatch – PyPA 提供的 PyPI 鏡像工具。
devpi – PyPI 服務和打包/測試/分發工具。
localshop – 本地 PyPI 服務(自定義包並且自動對 PyPI 鏡像)。
分發
打包為可執行文件以便分發。
PyInstaller – 將 Python 程序轉換成獨立的執行文件(跨平台)。
dh-virtualenv – 構建並將 virtualenv 虛擬環境作為一個 Debian 包來發布。
Nuitka – 將腳本、模塊、包編譯成可執行文件或擴展模塊。
py2app – 將 Python 腳本變為獨立軟體包(Mac OS X)。
py2exe – 將 Python 腳本變為獨立軟體包(Windows)。
pynsist – 一個用來創建 Windows 安裝程序的工具,可以在安裝程序中打包 Python本身。
構建工具
將源碼編譯成軟體。
buildout – 一個構建系統,從多個組件來創建,組裝和部署應用。
BitBake – 針對嵌入式 Linux 的類似 make 的構建工具。
fabricate – 對任何語言自動找到依賴關系的構建工具。
PlatformIO – 多平台命令行構建工具。
PyBuilder – 純 Python 實現的持續化構建工具。
SCons – 軟體構建工具。
互動式解析器
互動式 Python 解析器。
IPython – 功能豐富的工具,非常有效的使用互動式 Python。
bpython- 界面豐富的 Python 解析器。
ptpython – 高級互動式Python解析器, 構建於python-prompt-toolkit 之上。
文件
文件管理和 MIME(多用途的網際郵件擴充協議)類型檢測。
imghdr – (Python 標准庫)檢測圖片類型。
mimetypes – (Python 標准庫)將文件名映射為 MIME 類型。
path.py – 對 os.path 進行封裝的模塊。
pathlib – (Python3.4+ 標准庫)跨平台的、面向對象的路徑操作庫。
python-magic- 文件類型檢測的第三方庫 libmagic 的 Python 介面。
Unipath- 用面向對象的方式操作文件和目錄
watchdog – 管理文件系統事件的 API 和 shell 工具
日期和時間
操作日期和時間的類庫。
arrow- 更好的 Python 日期時間操作類庫。
Chronyk – Python 3 的類庫,用於解析手寫格式的時間和日期。
dateutil – Python datetime 模塊的擴展。
delorean- 解決 Python 中有關日期處理的棘手問題的庫。
moment – 一個用來處理時間和日期的Python庫。靈感來自於Moment.js。
PyTime – 一個簡單易用的Python模塊,用於通過字元串來操作日期/時間。
pytz – 現代以及歷史版本的世界時區定義。將時區資料庫引入Python。
when.py – 提供用戶友好的函數來幫助用戶進行常用的日期和時間操作。
文本處理
用於解析和操作文本的庫。
通用
chardet – 字元編碼檢測器,兼容 Python2 和 Python3。
difflib – (Python 標准庫)幫助我們進行差異化比較。
ftfy – 讓Unicode文本更完整更連貫。
fuzzywuzzy – 模糊字元串匹配。
Levenshtein – 快速計算編輯距離以及字元串的相似度。
pangu.py – 在中日韓語字元和數字字母之間添加空格。
pyfiglet -figlet 的 Python實現。
shortuuid – 一個生成器庫,用以生成簡潔的,明白的,URL 安全的 UUID。
unidecode – Unicode 文本的 ASCII 轉換形式 。
uniout – 列印可讀的字元,而不是轉義的字元串。
xpinyin – 一個用於把漢字轉換為拼音的庫。
6. 常用Python機器學習庫有哪些
Python作為一門理想的集成語言,將各種技術綁定在一起,除了為用戶提供更方便的功能之外,還是一個理想的粘合平台,在開發人員與外部庫的低層次集成人員之間搭建連接,以便用C、C++實現更高效的演算法。
使用Python編程可以快速遷移代碼並進行改動,無須花費過多的精力在修改代碼與代碼規范上。開發者在Python中封裝了很多優秀的依賴庫,可以直接拿來使用,常見的機器學習庫如下:
1、Scikit-Learn
Scikit-Learn基於Numpy和Scipy,是專門為機器學習建造的一個Python模塊,提供了大量用於數據挖掘和分析的工具,包括數據預處理、交叉驗證、演算法與可視化演算法等一系列介面。
Scikit-Learn基本功能可分為六個部分:分類、回歸、聚類、數據降維、模型選擇、數據預處理。其中集成了大量分類、回歸、聚類功能,包括支持向量機、邏輯回歸、隨機森林、樸素貝葉斯等。
2、Orange3
Orange3是一個基於組件的數據挖掘和機器學習軟體套裝,支持Python進行腳本開發。它包含一系列的數據可視化、檢索、預處理和建模技術,具有一個良好的用戶界面,同時也可以作為Python的一個模塊使用。
用戶可通過數據可視化進行數據分析,包含統計分布圖、柱狀圖、散點圖,以及更深層次的決策樹、分層聚簇、熱點圖、MDS等,並可使用它自帶的各類附加功能組件進行NLP、文本挖掘、構建網路分析等。
3、XGBoost
XGBoost是專注於梯度提升演算法的機器學習函數庫,因其優良的學習效果及高效的訓練速度而獲得廣泛的關注。XGBoost支持並行處理,比起同樣實現了梯度提升演算法的Scikit-Learn庫,其性能提升10倍以上。XGBoost可以處理回歸、分類和排序等多種任務。
4、NuPIC
NuPIC是專注於時間序列的一個機器學習平台,其核心演算法為HTM演算法,相比於深度學習,其更為接近人類大腦的運行結構。HTM演算法的理論依據主要是人腦中處理高級認知功能的新皮質部分的運行原理。NuPIC可用於預測以及異常檢測,使用面非常廣,僅要求輸入時間序列即可。
5、Milk
Milk是Python中的一個機器學習工具包。Milk注重提升運行速度與降低內存佔用,因此大部分對性能敏感的代碼都是使用C++編寫的,為了便利性在此基礎上提供Python介面。重點提供監督分類方法,如SVMs、KNN、隨機森林和決策樹等。
7. python 最常用的內建函數。
writer
=
open(『/tmp.log',
'a',
encoding='utf-8')
#
以追加模式打開tmp.log文件,編碼為utf-8
writer.write('開始處理...')
#
寫入內容
writer.write('%(tile)s
%(author)s
%(size)d
%(summary)s'
%
book)
writer.write('處理完畢')
writer.flush()
#
刷新緩存
writer.close()
#
關閉文件
8. 太全了!Python3常用內置函數總結
數學相關
abs(a) : 求取絕對值。abs(-1)
max(list) : 求取list最大值。max([1,2,3])
min(list) : 求取list最小值。min([1,2,3])
sum(list) : 求取list元素的和。 sum([1,2,3]) >>> 6
sorted(list) : 排序,返回排序後的list。
len(list) : list長度,len([1,2,3])
divmod(a,b): 獲取商和余數。 divmod(5,2) >>> (2,1)
pow(a,b) : 獲取乘方數。pow(2,3) >>> 8
round(a,b) : 獲取指定位數的小數。a代表浮點數,b代表要保留的位數。round(3.1415926,2) >>> 3.14
range(a[,b]) : 生成一個a到b的數組,左閉右開。range(1,10) >>> [1,2,3,4,5,6,7,8,9]
類型轉換
int(str) : 轉換為int型。int('1') >>> 1
float(int/str) : 將int型或字元型轉換為浮點型。float('1') >>> 1.0
str(int) : 轉換為字元型。str(1) >>> '1'
bool(int) : 轉換為布爾類型。 str(0) >>> False str(None) >>> False
bytes(str,code) : 接收一個字元串,與所要編碼的格式,返回一個位元組流類型。bytes('abc', 'utf-8') >>> b'abc' bytes(u'爬蟲', 'utf-8') >>> b'xe7x88xacxe8x99xab'
list(iterable) : 轉換為list。 list((1,2,3)) >>> [1,2,3]
iter(iterable): 返回一個可迭代的對象。 iter([1,2,3]) >>> <list_iterator object at 0x0000000003813B00>
dict(iterable) : 轉換為dict。 dict([('a', 1), ('b', 2), ('c', 3)]) >>> {'a':1, 'b':2, 'c':3}
enumerate(iterable) : 返回一個枚舉對象。
tuple(iterable) : 轉換為tuple。 tuple([1,2,3]) >>>(1,2,3)
set(iterable) : 轉換為set。 set([1,4,2,4,3,5]) >>> {1,2,3,4,5} set({1:'a',2:'b',3:'c'}) >>> {1,2,3}
hex(int) : 轉換為16進制。hex(1024) >>> '0x400'
oct(int) : 轉換為8進制。 oct(1024) >>> '0o2000'
bin(int) : 轉換為2進制。 bin(1024) >>> '0b10000000000'
chr(int) : 轉換數字為相應ASCI碼字元。 chr(65) >>> 'A'
ord(str) : 轉換ASCI字元為相應的數字。 ord('A') >>> 65
相關操作
eval****() : 執行一個表達式,或字元串作為運算。 eval('1+1') >>> 2
exec() : 執行python語句。 exec('print("Python")') >>> Python
filter(func, iterable) : 通過判斷函數fun,篩選符合條件的元素。 filter(lambda x: x>3, [1,2,3,4,5,6]) >>> <filter object at 0x0000000003813828>
map(func, *iterable) : 將func用於每個iterable對象。 map(lambda a,b: a+b, [1,2,3,4], [5,6,7]) >>> [6,8,10]
zip(*iterable) : 將iterable分組合並。返回一個zip對象。 list(zip([1,2,3],[4,5,6])) >>> [(1, 4), (2, 5), (3, 6)]
type():返回一個對象的類型。
id(): 返回一個對象的唯一標識值。
hash(object):返回一個對象的hash值,具有相同值的object具有相同的hash值。 hash('python') >>> 7070808359261009780
help():調用系統內置的幫助系統。
isinstance():判斷一個對象是否為該類的一個實例。
issubclass():判斷一個類是否為另一個類的子類。
globals() : 返回當前全局變數的字典。
next(iterator[, default]) : 接收一個迭代器,返回迭代器中的數值,如果設置了default,則當迭代器中的元素遍歷後,輸出default內容。
reversed(sequence) : 生成一個反轉序列的迭代器。 reversed('abc') >>> ['c','b','a']