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])
將一個文件對象的內容拷貝到另一個文件對象中去

import shutil
shutil.copyfileobj(open("a.txt",'r'),open('b.txt','w'))

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

shutil.copyfile("old.txt",'new.txt')

shutil.copymode(src,dst)
僅僅只是拷貝權限,文件的內容和組都不發生改變

shutil.copymode("1.log","2.log")

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

shutil.copymode("1.log","2.log")

shutil.copy2(str,dst)
機拷貝文件,也拷貝文件的狀態信息

shutil.copymode("1.log","2.log")

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

shutil.copytree('folder1', 'folder2',ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #不拷貝pyc結尾和tem開頭的文件

shutil.rmtree(path[, ignore_errors[, onerror]])
遞歸刪除文件夾中的所有文件

shutil.rmtree('folder')

shutil.move(src, dst)
類似于linux的mv命令,就相當于文件夾重命名

shutil.move('folder1','folder3')

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對象

#將 /root/develop 下的文件打包放置當前程序目錄import shutil
>>>shutil.make_archive('www','tar','/root/develop')
'/root/develop/www.tar'#將 /root/develop 下的文件打包放置 /root/目錄下
import shutil
>>> shutil.make_archive("/root/www", 'tar', root_dir='/root/develop')
'/root/www.tar'

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()  #b9092bfe47f21e2930a864b457f7c26d

random模塊

import randomprint random.random()  #生成一個隨機浮點數:0.0---1.0 不包括1.0

random.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.48687917972

random.randint(a,b) 用于生成一個指定范圍內的整數,a為下限,b為上限,生成的隨機整數a<=n<=b;若a=b,則n=a;若a>b,報錯

print random.randint(4,5) #5

random.randrange([start], stop [,step]) 從指定范圍內,按指定基數遞增的集合中獲取一個隨機數,基數缺省值為1

print random.randrange(10,20,3) #從10,13,16,19 中19

random.choice(sequence) 從序列中獲取一個隨機元素,參數sequence表示一個有序類型,并不是一種特定類型,泛指list,tuple,字符串等

seq=['abc','cc','dd']
print random.choice(seq)  #dd

random.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


#讀取
f=open("a.txt",'r')
d=json.loads(f.read())
f.close()
print d  #{u'k3': u'v3', u'k2': u'v2', u'k1': u'v1', u'k4': u'v4'}print type(d)   #載入后既是一個字典類型的數據,這樣就減少了很多麻煩<type 'dict'>print d['k1']   #v1

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256279.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256279.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256279.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【圖像處理】——Python實現圖像加噪(隨機噪聲、椒鹽噪聲、高斯噪聲等)

目錄 1、隨機噪聲 2、椒鹽噪聲 3、高斯噪聲 補充:numpy.clip函數 4、其他噪聲 1、隨機噪聲 隨機噪聲就是通過隨機函數在圖像上隨機地

100NED

將生活融入編程轉載于:https://www.cnblogs.com/nedhome/p/5036680.html

Windows10 VS2019下使用CMake3.20.1打開PCL1.11.0程序

安裝CMake 為什么要使用cmake cmake 是kitware 公司以及一些開源開發者在開發幾個工具套件(VTK)的過程中衍生品&#xff0c;成為一個獨立的開放源代碼項目。 CMake是一個很強大的編譯配置工具&#xff0c;支持多種平臺和編譯器&#xff0c;通過編寫CMakeLists.txt&#xff0c…

Java 并發---ConcurrentHashMap

concurrent包下的并發容器 JDK5中添加了新的concurrent包&#xff0c;相對同步容器而言&#xff0c;并發容器通過一些機制改進了并發性能。因為同步容器將所有對容器狀態的訪問都串行化了&#xff0c;這樣保證了線程的安全性&#xff0c;所以這種方法的代價就是嚴重降低了并發性…

【圖像處理】——圖像濾波(Python+opencv實現三種方法:均值濾波、中值濾波、高斯濾波等)

目錄 一、什么是濾波以及濾波的目的? 二、均值濾波(cv2.blur()) 1、原理 2、關鍵代碼

UIScrollView事件攔截

在日常的開發中,我們經常會用到UIScrollView,然而,它是一個問題頻出的控件,比如在nib中使用它就必須手動為它創建一個ContentView.當然了使用春代碼的時候使用了懶加載機制使得它能夠擁有一個contentView,今天我們不談這個問題,我們來談談UIScrollView的事件攔截相關的知識. 在…

Windows10下安裝QT5.14.2并用VS2019打開

安裝 從官網下載&#xff1a;QT 安裝方法僅需要注意&#xff1a; 1.最好不要安裝在C盤。 2.根據開發需要安裝功能模塊&#xff0c;具體見參考文章。 https://jingyan.baidu.com/article/656db918d9292ae380249c4f.html 因為是用于PCL編程的&#xff0c;所以只選了msvc2017_64,…

【圖像處理】——圖像質量評價指標信噪比(PSNR)和結構相似性(SSIM)(含原理和Python代碼)

目錄 一、信噪比(PSNR) 1、信噪比的原理與計算公式 2、Python常規代碼實現PSNR計算 3、TensorFlo

Error和Exception的區別

Error&#xff1a;值得是指與虛擬機相關的問題&#xff0c;比如虛擬機崩潰&#xff0c;虛擬機錯誤&#xff0c;內存空間不足&#xff0c;方法調用棧溢出。 對于這類錯誤應建議中斷。 Exception&#xff1a;是指程序員可以處理的異常&#xff0c;可以捕獲并且能夠恢復&#xf…

JAVA TCP/IP網絡通訊編程(二)

一個實例通過client端和server端通訊 客戶端通過TCP/IP傳輸資源文件&#xff0c;比如圖片&#xff0c;文字&#xff0c;音頻&#xff0c;視頻等..... 服務端接受到文件存入本地磁盤&#xff0c;返回接受到&#xff1a;“收到來自于"s.getInetAddress().getHostName()"…

C#中json序列化與反序列化

json格式概念 JSON(JavaScript Object Notation) 是一種輕量級的數據傳輸格式&#xff0c;其采用完全獨立于語言的文本格式&#xff0c;使JSON成為理想的數據交換語言。 json由兩種格式組成。 1.名稱/值”對的集合&#xff0c;可以一起創建多個"名稱 / 值對"。 { “…

volley用法之 以post方式發送 json 參數

需求是這樣 我們需要發送一個post請求向服務器要參數。要求是發送的post參數也要是json格式。 簡單一點的是這樣的&#xff1a; 如果要發送的是這樣簡單的json格式&#xff0c;我們可以簡單的使用map來實現&#xff1a; RequestQueue requestQueue Volley.newRequestQueue(get…

我的友情鏈接

小小忍者Tab轉載于:https://blog.51cto.com/12737170/2043087

JAVA 文件編譯執行與虛擬機(JVM)簡單介紹

詳見&#xff1a;http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的內存分配 JAVA 文件編譯執行與虛擬機(JVM)介紹 Java 虛擬機(JVM)是可運行Java代碼的假想計算機。只要根據JVM規格描述將解釋器移植到特定的計算機上&#xff0c;就能保證經過編譯的任…

C#中數據流(文件流、內存流、網絡流等)相關知識點梳理

基本概念 C#中數據流的應用體現在方方面面&#xff0c;現在針其常用的幾種類進行一次梳理。 數據流包括文件流(FileStream)、內存流(MemoryStream)、網絡流(NetworkStream)以及讀寫流如StreamReader、StreamWriter、BinaryReader和BinaryWriter等。 數據流是什么&#xff1f; …

dns服務 很多問題,后續再研究

慕課網&#xff1a;http://www.imooc.com/video/5220 參考&#xff1a;http://jingyan.baidu.com/article/870c6fc32c028eb03fe4be30.html http://www.tuicool.com/articles/aUNzMfi http://www.07net01.com/linux/dnszhucongfuzhijiquyuchuansong_505144_1373161402.html http…

LINUX下用腳本實現JDK+TOMCAT

這幾天真是累。常常下半夜3點睡覺。是因為這段時間對LINUX下的SHELL編程喜歡上了。 一時弄的忘了睡覺。還好&#xff0c;累沒白累。遍寫了一個JDKTOMCAT的自動安裝&#xff0c;配置的腳本 在這里我把配置出來的成果拿來和大家分享一下。希望有高手來指定一下&#xff0c;我在編…

【圖像處理】——圖像增強Python實現直方圖均衡化

目錄 一、相關概念 1、灰度直方圖概念(hist) 2、灰度概率累積函數(cdf) 3、灰

C#常見編碼方式總結

一、概念 我們知道計算機是基于二進制來表示數據的&#xff0c;那么對于字母和漢字等字符用二進制如何表示&#xff1f; 這就需要用一種編碼方式將這些字母或者符號轉換二進制表示。首先需要對字符集進行編碼表示&#xff0c;每個編碼代表一個固定的字符&#xff0c;然后再將字…