Python檔案處理小結

來源:互聯網
上載者:User

標籤:off   處理   定位   position   from   寫檔案   格式   刪除   getcwd   

1. 檔案的開啟與關閉<1>開啟檔案

在python,使用open函數,可以開啟一個已經存在的檔案,或者建立一個新檔案

open(檔案名稱,訪問模式)

樣本如下:

f = open(‘test.txt‘, ‘w‘)

 

說明:

訪問模式 說明
r 以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。
w 開啟一個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
a 開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
rb 以二進位格式開啟一個檔案用於唯讀。檔案指標將會放在檔案的開頭。這是預設模式。
wb 以二進位格式開啟一個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
ab 以二進位格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
r+ 開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。
w+ 開啟一個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
a+ 開啟一個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。
rb+ 以二進位格式開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。
wb+ 以二進位格式開啟一個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
ab+ 以二進位格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。
<2>關閉檔案

close( )

樣本如下:

# 建立一個檔案,檔案名稱為:test.txtf = open(‘test.txt‘, ‘w‘)# 關閉這個檔案f.close()
2. 檔案的讀寫<1>寫資料(write)

使用write()可以完成向檔案寫入資料

demo:

f = open(‘test.txt‘, ‘w‘)f.write(‘hello world, i am here!‘)f.close()

運行現象:

<2>讀資料(read)

使用read(num)可以從檔案中讀取資料,num表示要從檔案中讀取的資料的長度(單位是位元組),如果沒有傳入num,那麼就表示讀取檔案中所有的資料

demo:

f = open(‘test.txt‘, ‘r‘)content = f.read(5)print(content)print("-"*30)content = f.read()print(content)f.close()

 

運行現象:

 

<3>讀資料(readlines)

就像read沒有參數時一樣,readlines可以按照行的方式把整個檔案中的內容進行一次性讀取,並且返回的是一個列表,其中每一行的資料為一個元素。

#coding=utf-8f = open(‘test.txt‘, ‘r‘)content = f.readlines()print(type(content))i=1for temp in content:    print("%d:%s"%(i, temp))    i+=1f.close()

運行現象:

<4>讀資料(readline)
#coding=utf-8f = open(‘test.txt‘, ‘r‘)content = f.readline()print("1:%s"%content)content = f.readline()print("2:%s"%content)f.close()

運行現象:

3. 檔案複製
#coding=utf-8oldFileName = raw_input("請輸入要拷貝的檔案名稱字:")oldFile = open(oldFileName,‘rb‘)# 如果開啟檔案if oldFile:    # 提取檔案的尾碼    fileFlagNum = oldFileName.rfind(‘.‘)    if fileFlagNum > 0:        fileFlag = oldFileName[fileFlagNum:]    # 組織新的檔案名稱字    newFileName = oldFileName[:fileFlagNum] + ‘[複件]‘ + fileFlag    # 建立新檔案    newFile = open(newFileName, ‘wb‘)    # 把舊檔案中的資料,一行一行的進行複製到新檔案中    for lineContent in oldFile.readlines():        newFile.write(lineContent)    # 關閉檔案    oldFile.close()    newFile.close()
4. 檔案的隨機讀寫<1>擷取當前讀寫的位置

在讀寫檔案的過程中,如果想知道當前的位置,可以使用tell()來擷取。

# 開啟一個已經存在的檔案f = open("test.txt", "r")str = f.read(3)print "讀取的資料是 : ", str# 尋找當前位置position = f.tell()print "當前檔案位置 : ", positionstr = f.read(3)print "讀取的資料是 : ", str# 尋找當前位置position = f.tell()print "當前檔案位置 : ", positionf.close()
<2>定位到某個位置

如果在讀寫檔案的過程中,需要從另外一個位置進行操作的話,可以使用seek()

seek(offset, from)有2個參數

  • offset:位移量
  • from:方向
    • 0:表示檔案開頭
    • 1:表示當前位置
    • 2:表示檔案末尾

demo:把位置設定為:從檔案開頭,位移5個位元組。

# 開啟一個已經存在的檔案f = open("test.txt", "r")str = f.read(30)print "讀取的資料是 : ", str# 尋找當前位置position = f.tell()print "當前檔案位置 : ", position# 重新設定位置f.seek(5,0)# 尋找當前位置position = f.tell()print "當前檔案位置 : ", positionf.close()

demo:把位置設定為:離檔案末尾,3位元組處

 # 開啟一個已經存在的檔案f = open("test.txt", "r")# 尋找當前位置position = f.tell()print "當前檔案位置 : ", position# 重新設定位置f.seek(-3,2)# 讀取到的資料為:檔案最後3個位元組資料str = f.read()print "讀取的資料是 : ", strf.close()

 

5. 檔案的重新命名、刪除

有些時候,需要對檔案進行重新命名、刪除等一些操作,python的os模組中都有這麼功能

<1>檔案重新命名

os模組中的rename()可以完成對檔案的重新命名操作

rename(需要修改的檔案名稱, 新的檔案名稱)

import osos.rename("畢業論文.txt", "畢業論文-最終版.txt")
<2>刪除檔案

os模組中的remove()可以完成對檔案的刪除操作

remove(待刪除的檔案名稱)

import osos.remove("畢業論文.txt")
6. 檔案夾的相關操作

實際開發中,有時需要用程式的方式對檔案夾進行一定的操作,比如建立、刪除等。

就像對檔案操作需要os模組一樣,如果要操作檔案夾,同樣需要os模組。

<1>建立檔案夾
import osos.mkdir("張三")

 

<2>擷取目前的目錄
import osos.getcwd()

 

<3>改變預設目錄
import osos.chdir("../")

 

<4>擷取目錄列表
import osos.listdir("./")

 

<5>刪除檔案夾
import osos.rmdir("張三")
7. 批量修改檔案名稱
#coding=utf-8#批量在檔案名稱前加首碼import osfunFlag = 1 # 1表示添加標誌  2表示刪除標誌folderName = ‘./renameDir/‘# 擷取指定路徑的所有檔案名稱字dirList = os.listdir(folderName)# 遍曆輸出所有檔案名稱字for name in dirList:    print name    if funFlag == 1:        newName = ‘[修改]-‘ + name    elif funFlag == 2:        num = len(‘[修改]-‘)        newName = name[num:]    print newName    os.rename(folderName+name, folderName+newName)

 

Python檔案處理小結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.