使用Python讀寫及壓縮和解壓縮檔案的示例

2022-10-04 21:42:39 字數 2964 閱讀 5494

讀寫檔案

首先看乙個例子:

f = open('thefile.txt','w') #以寫方式開啟,

try:

f.write('wokao')

finally:

f.close()

檔案的開啟方式:

f = open(『檔案','mode')

『r':唯讀(預設。如果檔案不存在,則丟擲錯誤)

『w':只寫(如果檔案不存在,則自動建立檔案),此時無法呼叫f.read()方法,且當呼叫f.write()時,將清空檔案原有內容

『a':附加到檔案末尾

『r+':讀寫

如果需要以二進位制方式開啟檔案,需要在mode後面加上字元」b」,比如」rb」,」wb」等

檔案的屬性:

f.closed #標記檔案是否已經關閉,由close()改寫

f.encoding #檔案編碼

f.mode #開啟模式

f.name #檔名

f.newlines #檔案中用到的換行模式,是乙個tuple

f.softspace #boolean型,一般為0,據說用於print

檔案的讀寫方法:

f.read([size]) #size為讀取的長度,以byte為單位

f.readline([size]) #讀一行,如果定義了size,有可能返回的只是一qokgmjiw行的一部分

f.readlines([size]) #把檔案每一行作為乙個list的乙個成員,並返回這個list。其實它的內部是通過迴圈呼叫readline()來實現的。如果提供swww.cppcns.comize引數,size是表示讀取內容的總長,也就是說可能唯讀到檔案的一部分

f.wri程式設計客棧te(str) #把str寫到檔案中,write()並不會在str後加上乙個換行符

f.writelines(seq) #把seq的內容全部寫到檔案中。這個函式也只是忠實地寫入,不會在每行後面加上任何東西

f.close() #關閉檔案

f.flush() #把緩衝區的內容寫入硬碟

f.fileno() #返回乙個長整型的」檔案標籤「

f.isatty() #檔案是否是乙個終端裝置檔案(unix系統中的)

f.tell() #返回檔案操作標記的當前位置,以檔案的開頭為原點

f.next() #返回下一行,並將檔案操作標記位移到下一行。把乙個file用於for … in file這樣的語句時,就是呼叫next()函式來實現遍歷的

f.seek(offset[,from]) #將檔案打操作標記移到offset的位置。這個offset一般是相對於檔案的開頭來計算的,一般為正數。但如果提供了from引數就不一定了,from可以為0表示從程式設計客棧頭開始計算,1表示以當前位置為原點計算。2表示以檔案末尾為原點進行計算。需要注意,如果檔案以a或a+的模式開啟,每次進行寫操作時,檔案操作標記會自動返回到檔案末尾。

f.truncate([size]) #把檔案裁成規定的大小,預設的是裁到當前檔案操作標記的位置。

python在讀取乙個檔案時,會記住其在檔案中的位置,如果第二次仍需要從頭讀取,則需要呼叫f.seek(0)重新從頭開始讀取。

一些例子:

>>> f = open('hi.txt','w')

>>> f.closed

false

>>> f.mode

'w'>>> f.name

'hi.txt'

>>> f.encoding

壓縮和解壓縮檔案(zip/unzip)

1,單個檔案壓縮成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()

仔細觀察壓縮以後的archive.zip,裡面有乙個1.py和乙個root的目錄,root目錄下有乙個install.log

zip_deflated是壓縮標誌,如果使用它需要編譯了zlib模組,如果僅僅是打包而不壓縮的話,可以改為zipfile.zip_stored

2,把zip檔案解壓縮

#!/usr/bin/python

import zipfile

www.cppcns.comzfile = 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裡有目錄,則在當前目錄下也應該存在對應的目錄,否則會報錯。

3,把整個資料夾壓縮

#!/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()

如果出現:

compression requires the (missing) zlib module

解決方法:

yum install zlib zlib-devel

,然後重新編譯安裝python

本文標題: 使用python讀寫及壓縮和解壓縮檔案的示例

本文位址:

c 使用SharpZipLib壓縮和解壓縮檔案

正常zip方式壓縮檔案,然後用wrar工具可以解壓出來 開始用wrar3.4版本的怎麼也解不出來,以為是不支援wrar解壓,後來改用3.9及4.11版本可以實現正常解壓,搞了半天時間,原來是版本問題,版本不對害死人啊 另外wrar壓縮時選擇 zip 選項壓縮時,再用此類進行解壓,也可以正常解壓。在此...

使用GZipStream實現壓縮和解壓縮

之前做專案,涉及到存入到資料庫或者http傳輸的資料量比較大,這個時候,就需要考慮在存入資料庫或者傳送傳輸之前,將資料壓縮下,當從資料庫中取出時,再解壓還原資料。特地找了下發現有gzipstream可以實現這個功能。此類表示gzip資料格式,該格式使用行業標準演算法進行無損檔案壓縮和解壓縮。該格式包...

iOS中使用ZipArchive 壓縮和解壓縮檔案

引自 在本教程中,我將演示如何在ios程式中壓縮和解壓縮檔案。我們將使用乙個叫做ziparchive的第三方庫來實現。儘管壓縮和解壓縮有許多其他的方案可選,但是我覺得ziparchive庫是最快捷 最簡單的解決方案。let s go。為什麼我需要解壓縮檔案 有許多原因能解釋為什麼我要在工程中使用壓縮...