使用Python讀寫及壓縮和解壓縮文件的示例
讀寫文件
首先看一個(gè)例子:
f = open('thefile.txt','w') #以寫方式打開(kāi), try: f.write('wokao') finally: f.close()
文件的打開(kāi)方式:
f = open(‘文件','mode') ‘r':只讀(缺省。如果文件不存在,則拋出錯(cuò)誤) ‘w':只寫(如果文件不存在,則自動(dòng)創(chuàng)建文件),此時(shí)無(wú)法調(diào)用f.read()方法,且當(dāng)調(diào)用f.write()時(shí),將清空文件原有內(nèi)容 ‘a(chǎn)':附加到文件末尾 ‘r+':讀寫
如果需要以二進(jìn)制方式打開(kāi)文件,需要在mode后面加上字符”b”,比如”rb”,”wb”等
文件的屬性:
f.closed #標(biāo)記文件是否已經(jīng)關(guān)閉,由close()改寫 f.encoding #文件編碼 f.mode #打開(kāi)模式 f.name #文件名 f.newlines #文件中用到的換行模式,是一個(gè)tuple f.softspace #boolean型,一般為0,據(jù)說(shuō)用于print
文件的讀寫方法:
f.read([size]) #size為讀取的長(zhǎng)度,以byte為單位 f.readline([size]) #讀一行,如果定義了size,有可能返回的只是一行的一部分 f.readlines([size]) #把文件每一行作為一個(gè)list的一個(gè)成員,并返回這個(gè)list。其實(shí)它的內(nèi)部是通過(guò)循環(huán)調(diào)用readline()來(lái)實(shí)現(xiàn)的。如果提供size參數(shù),size是表示讀取內(nèi)容的總長(zhǎng),也就是說(shuō)可能只讀到文件的一部分 f.write(str) #把str寫到文件中,write()并不會(huì)在str后加上一個(gè)換行符 f.writelines(seq) #把seq的內(nèi)容全部寫到文件中。這個(gè)函數(shù)也只是忠實(shí)地寫入,不會(huì)在每行后面加上任何東西 f.close() #關(guān)閉文件 f.flush() #把緩沖區(qū)的內(nèi)容寫入硬盤 f.fileno() #返回一個(gè)長(zhǎng)整型的”文件標(biāo)簽“ f.isatty() #文件是否是一個(gè)終端設(shè)備文件(unix系統(tǒng)中的) f.tell() #返回文件操作標(biāo)記的當(dāng)前位置,以文件的開(kāi)頭為原點(diǎn) f.next() #返回下一行,并將文件操作標(biāo)記位移到下一行。把一個(gè)file用于for … in file這樣的語(yǔ)句時(shí),就是調(diào)用next()函數(shù)來(lái)實(shí)現(xiàn)遍歷的 f.seek(offset[,from]) #將文件打操作標(biāo)記移到offset的位置。這個(gè)offset一般是相對(duì)于文件的開(kāi)頭來(lái)計(jì)算的,一般為正數(shù)。但如果提供了from參數(shù)就不一定了,from可以為0表示從頭開(kāi)始計(jì)算,1表示以當(dāng)前位置為原點(diǎn)計(jì)算。2表示以文件末尾為原點(diǎn)進(jìn)行計(jì)算。需要注意,如果文件以a或a+的模式打開(kāi),每次進(jìn)行寫操作時(shí),文件操作標(biāo)記會(huì)自動(dòng)返回到文件末尾。 f.truncate([size]) #把文件裁成規(guī)定的大小,默認(rèn)的是裁到當(dāng)前文件操作標(biāo)記的位置。
Python在讀取一個(gè)文件時(shí),會(huì)記住其在文件中的位置,如果第二次仍需要從頭讀取,則需要調(diào)用f.seek(0)重新從頭開(kāi)始讀取。
一些例子:
>>> f = open('hi.txt','w') >>> f.closed False >>> f.mode 'w' >>> f.name 'hi.txt' >>> f.encoding
壓縮和解壓縮文件(zip/unzip)
1,單個(gè)文件壓縮成zip文件
#!/usr/bin/python import zipfile f = zipfile.ZipFile('archive.zip','w',zipfile.ZIP_DEFLATED) f.write('1.py') f.write('/root/install.log') f.close()
仔細(xì)觀察壓縮以后的archive.zip,里面有一個(gè)1.py和一個(gè)root的目錄,root目錄下有一個(gè)install.log
ZIP_DEFLATED是壓縮標(biāo)志,如果使用它需要編譯了zlib模塊,如果僅僅是打包而不壓縮的話,可以改為zipfile.ZIP_STORED
2,把zip文件解壓縮
#!/usr/bin/python import zipfile zfile = zipfile.ZipFile('archive.zip','r') for filename in zfile.namelist(): data = zfile.read(filename) file = open(filename, 'w+b') file.write(data) file.close()
如果archive.zip里有目錄,則在當(dāng)前目錄下也應(yīng)該存在對(duì)應(yīng)的目錄,否則會(huì)報(bào)錯(cuò)。
3,把整個(gè)文件夾壓縮
#!/usr/bin/python import zipfile import os f = zipfile.ZipFile('archive.zip','w',zipfile.ZIP_DEFLATED) startdir = "c:\\\\mydirectory" for dirpath, dirnames, filenames in os.walk(startdir): for filename in filenames: f.write(os.path.join(dirpath,filename)) f.close()
如果出現(xiàn):
Compression requires the (missing) zlib module
解決方法:
yum install zlib zlib-devel
,然后重新編譯安裝python
相關(guān)文章
使用Python的PIL模塊來(lái)進(jìn)行圖片對(duì)比
這篇文章主要介紹了使用Python的PIL模塊來(lái)進(jìn)行圖片對(duì)比的方法,搜索引擎最基本的圖片搜索也是利用圖片顏色值的對(duì)比來(lái)實(shí)現(xiàn)的,需要的朋友可以參考下2016-02-02Python 模擬動(dòng)態(tài)產(chǎn)生字母驗(yàn)證碼圖片功能
這篇文章主要介紹了Python 模擬動(dòng)態(tài)產(chǎn)生字母驗(yàn)證碼圖片,這里給大家介紹了pillow模塊的使用,需要的朋友可以參考下2019-12-12關(guān)于Theano和Tensorflow多GPU使用問(wèn)題
這篇文章主要介紹了關(guān)于Theano和Tensorflow多GPU使用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Python實(shí)現(xiàn)語(yǔ)音識(shí)別vosk的示例代碼
Vosk是一個(gè)功能強(qiáng)大且易于使用的語(yǔ)音識(shí)別工具包,它提供了Python綁定,使得在Python中使用Vosk變得非常方便,本文主要介紹了Python實(shí)現(xiàn)語(yǔ)音識(shí)別vosk的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12