Python:常用模块简介(1)
sys模塊
>>> sys.platform #返回操作系統平臺名稱 'win32' >>> sys.stdin #輸入相關 <open file '<stdin>', mode 'r' at 0x000000000337B030> >>> sys.stdout #輸出相關 <open file '<stdout>', mode 'w' at 0x000000000337B0C0> >>> sys.maxint #最大的int值 2147483647 >>> >>> sys.version #獲取python解釋器的版本信息 '2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:40:30) [MSC v.1500 64 bit (AMD64)]' >>>sys.argv #命令參數列表進度條
import sys import timedef view_bar(num, total):rate = float(num) / float(total)rate_num = int(rate * 100)r = '\r%d%%' % (rate_num, )sys.stdout.write(r) #做進度條用的sys.stdout.flush() #flush這個緩沖區,意味著它將緩沖區中一切寫入數據都flushif __name__ == '__main__':for i in range(0, 100):time.sleep(2)view_bar(i, 100)進度百分比os模塊
>>> os.getcwd() #獲取當前python的工作目錄 'C:\\Users\\cmustard' >>> print os.getcwd() C:\Users\cmustard >>>>>> os.chdir("d:") #改變當前的工作目錄 >>> os.getcwd() 'D:\\' >>>>>> os.curdir #返回當前目錄 '.' >>>>>> print os.pardir #獲取當前目錄的父目錄字符串 .. >>>os.makedirs("dir1/dir2")#可生成多層遞歸目錄os.removedirs('dirname1') #若目錄為空則刪除,并遞歸到上一級目錄,如若也為空,則刪除,以此類推os.mkdir("dirname") #創建文件夾os.rmdir("dirname") #刪除單級空目錄,若目錄不為空就無法刪除os.listdir('dirname') #列出指定目錄下的所有文件和子目錄,包括隱藏文件,返回一個列表 >>> >>> os.listdir('.') ['All Users', 'Default', 'Default User', 'Default.migrated','DefaultAppPool', 'desktop.ini', 'Public'] >>>os.remove("filename") #刪除一個文件名os.rename("oldname","newname") #重命名文件/目錄os.stat("dir/filename") #獲取文件或者目錄信息 >>> os.stat('Default') nt.stat_result(st_mode=16749, st_ino=0L, st_dev=0L, st_nlink=0, st_uid=0, st_gid =0, st_size=8192L, st_atime=1464553172L, st_mtime=1464553172L, st_ctime=14461865 10L) >>>os.sep #操作系統特定的路徑分隔符 >>> os.sep '\\' >>>os.linesep #當前平臺使用的行終止符 >>> os.linesep #win下的 '\r\n' >>>os.pathsep #用于分割文件路徑的字符串 >>> os.pathsep ';' >>>os.name #字符串指示當前使用平臺 >>> os.name #win-->nt unix-->posix 'nt' >>>os.system('cmd') #運行shell命令,直接顯示 >>> res-os.system('net user')\\CMUSTARD 的用戶帳戶----------------------------------------------------------- >>> print res #0表示成功執行 0 >>> os.popen('cmd') >>> os.popen("dir") #將返回的命令執行結果存放為文件類型 <open file 'dir', mode 'r' at 0x0000000002F19150> >>>f=os.popen("dir") >>> print [i for i in f]os.walk(top, topdown=True, onerror=None, followlinks=False) 這個方法返回的是一個三元tupple(dirpath, dirnames, filenames)* 其中第一個為起始路徑,* 第二個為起始路徑下的子文件夾,* 第三個是起始路徑下的文件.* dirpath是一個string,代表目錄的路徑,* dirnames是一個list,包含了dirpath下所有子目錄的名字,* filenames是一個list,包含了非目錄文件的名字.這些名字不包含路徑信息,如果需要得到全路徑,需要使用 os.path.join(dirpath, name).os.environ #獲取系統環境變量os.path.abspath(path) 返回path規范化的絕對路徑 >>> os.path.abspath(os.getcwd()) 'C:\\Users' >>>os.path.split(path) 將path分割成目錄和文件名二元組返回 >>> os.path.split("/tmp/dd/f.txt") ('/tmp/dd', 'f.txt') >>>os.path.dirname(path) 返回path的目錄。其實就是os.path.split(path)的第一個元素 >>> os.path.dirname(os.getcwd()) 'C:\\' >>>os.path.basename(path) 返回path最后的文件名。如何path以/或\結尾,那么就會返回空值。即os.path.split(path)的第二個元素os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False >>> os.path.exists("e://") True >>>os.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所指向的文件或者目錄的最后存取時間 >>> res=os.path.getatime('Public') >>> res=os.path.getatime('Public') >>> import time >>> time.ctime(res) 'Mon May 30 04:02:15 2016' >>>os.path.getmtime(path) 返回path所指向的文件或者目錄的最后修改時間shutil模塊
高級的 文件、文件夾、壓縮包 處理模塊
shutil.copyfileobj(fsrc, fdst[, length])
將一個文件對象的內容拷貝到另一個文件對象中去
shutil.copyfile(src,dst)
拷貝文件
shutil.copymode(src,dst)
僅僅只是拷貝權限,文件的內容和組都不發生改變
shutil.copystat(src,dst)
僅僅只是拷貝狀態信息,包括:mode bits,atime,mtime,flags
shutil.copy2(str,dst)
機拷貝文件,也拷貝文件的狀態信息
shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
遞歸的去拷貝文件夾
shutil.rmtree(path[, ignore_errors[, onerror]])
遞歸刪除文件夾中的所有文件
shutil.move(src, dst)
類似于linux的mv命令,就相當于文件夾重命名
make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,dry_run=0, owner=None, group=None, logger=None)
創建壓縮包并返回文路徑
base_name: 壓縮包的文件名,也可以是壓縮包的路徑。只是文件名時,則保存至·當前目錄,否則保存至指定路徑,
如:www =>保存至當前路徑
如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
format: 壓縮包種類,“zip”, “tar”, “bztar”,“gztar”
root_dir: 要壓縮的文件夾路徑(默認當前目錄)
owner: 用戶,默認當前用戶
group: 組,默認當前組
logger: 用于記錄日志,通常是logging.Logger對象
hashlib模塊
用于加密相關的操作的模塊,代替了md5模塊和sha模塊,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
import hashlib #MD5 hash=hashlib.md5() hash.update('admin') #help(hash.update) #更新所提供的字符串對象的散列狀態. print hash.hexdigest() #21232f297a57a5a743894a0e4a801fc3 print hash.digest() #!#/)zW��C�JJ��,正因為輸出亂碼,所以要轉換成16進制#sha1 hash=hashlib.sha1() hash.update('admin') print hash.hexdigest() #d033e22ae348aeb5660fc2140aec35850c4da997#sha256 hash=hashlib.sha256() hash.update('admin') print hash.hexdigest() #8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918#sha384 hash=hashlib.sha384() hash.update('admin') print hash.hexdigest()#9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2ec9f10290cdc0782#sha512 hash=hashlib.sha512() hash.update('admin') print hash.hexdigest()#c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec#為了防止撞庫,對加密算法中添加自定義key再來做加密 #MD5 hash=hashlib.md5('key') hash.update('admin') #===>就是hash.update('keyadmin') print hash.hexdigest() #f6c45a71296c1d65db3825a7dc781bc8#python內置庫中還有一個hmac模塊,它內部對我們創建的key和內容進行進一步的處理后在加密 import hmac h=hmac.new(key='key') h.update("admin") print h.hexdigest() #b9092bfe47f21e2930a864b457f7c26drandom模塊
import randomprint random.random() #生成一個隨機浮點數:0.0---1.0 不包括1.0random.uniform(a,b) 用于生成一個指定范圍內的隨機浮點數,a,b為上下限,只要a!=b,就會生成介于兩者之間的一個浮點數,若a=b,則生成的浮點數就是a
print random.uniform(3,4) #3.51035646075 print random.uniform(3,3) #3.0print random.uniform(4,3) #3.48687917972random.randint(a,b) 用于生成一個指定范圍內的整數,a為下限,b為上限,生成的隨機整數a<=n<=b;若a=b,則n=a;若a>b,報錯
print random.randint(4,5) #5random.randrange([start], stop [,step]) 從指定范圍內,按指定基數遞增的集合中獲取一個隨機數,基數缺省值為1
print random.randrange(10,20,3) #從10,13,16,19 中19random.choice(sequence) 從序列中獲取一個隨機元素,參數sequence表示一個有序類型,并不是一種特定類型,泛指list,tuple,字符串等
seq=['abc','cc','dd'] print random.choice(seq) #ddrandom.shuffle(x[,random]) 用于將一個列表中的元素打亂
seq=['hello','world','and','python'] random.shuffle(seq) print seq #['and', 'python', 'world', 'hello']random.sample(sequence,k) 從指定序列中隨機獲取k個元素作為一個片段返回,sample函數不會修改原有序列
seq=[1,2,3,4,5,6,7,8,9,10] print random.sample(seq,3) #隨機取出的最后一個片段返回[10, 4, 6]序列化
python用于序列化的兩個模塊一個是json模塊,一個是pickle模塊
json:用于字符串和字典之間進行轉換
pickle:用于python特有類型和python基礎類型進行轉換,只適合python用
Json模塊提供了四個基本功能:dumps、dump、loads、load
pickle模塊提供了四個基本功能:dumps、dump、loads、load
1.py
import json "json模塊主要用于跨程序交流,json是一種通用的數據結構" #將python字典存入文件,給其他程序讀取 f=open("a.txt",'w') src={"k1":"v1","k2":"v2","k3":"v3","k4":"v4"} json.dump(src,f) f.close()json存儲在文件中格式
2.py
3.py
import pickle "python獨有的模塊,為了方便用python程序之間的交流"#向文件中存取python類型的數據,這里存儲列表形式 src=[1,2,3,4,5,6,7] with open("a.txt",'w') as f:content=pickle.dump(src,f)文件中用pickle模塊序列化的列表的存儲格式
4.py
#取出文件 with open("a.txt",'r') as f:con=f.read()print pickle.loads(con) #[1, 2, 3, 4, 5, 6, 7] print type(pickle.loads(con))<type 'list'>在python中原來是什么類型的數據存儲在文件中,現在取出來就是什么類型的數據
load與loads的區別就是
load() with open("a.txt",'r') as f:print *.load(f) #{u'k3': u'v3', u'k2': u'v2', u'k1': u'v1', u'k4': u'v4'}loads() with open("a.txt",'r') as f:con=f.read()print *.loads(con) #{u'k3': u'v3', u'k2': u'v2', u'k1': u'v1', u'k4': u'v4'}轉載于:https://www.cnblogs.com/cmustard/p/6769931.html
總結
以上是生活随笔為你收集整理的Python:常用模块简介(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中信颜定制款要收工本费了!想办情侣卡的赶
- 下一篇: 徽商银行信用卡申请条件 徽商银行信用卡好