1. 程式人生 > >Python全棧開發之文件操作

Python全棧開發之文件操作

開始 文件的 只讀 示例 col remove code 上下文 adl

No.1 文件的概念

文件的概念和作用

計算機中的文件,就是存儲在某種長期儲存設備上的一段數據流

計算機中的文件,可以在需要的時候使用

文件的存儲方式

文本文件

可以使用文本編輯器查看

本質上還是二進制文件

二進制文件

保留的內容不能直接查看,而是提供給其他軟件查看

圖片、音頻、視頻等都是二進制文件

No.2 文件的基本操作

操作文件的基本套路

打開文件

讀寫文件

關閉文件

操作文件的函數

函數 說明
fp.read([size]) size為讀取的長度,以byte為單位
fp.readline([size]) 讀一行,如果定義了size,有可能返回的只是一行的一部分
fp.readlines([size]) 把文件每一行作為一個list的一個成員,並返回這個list
fp.write(str) 把str寫到文件中,write()並不會在str後加上一個換行符
p.writelines(seq) 把seq的內容全部寫到文件中(多行一次性寫入)
fp.close() 關閉文件
fp.flush() 把緩沖區的內容寫入硬盤
fp.fileno() 返回一個長整型的文件標簽
fp.tell() 返回文件操作標記的當前位置,以文件的開頭為原點
fp.next() 返回下一行,並將文件操作標記位移到下一行
fp.seek(offset[,whence]) 將文件打操作標記移到offset的位置。這個offset一般是相對於文件的開頭來計算的,一般為正數, whence可以為0表示從頭開始計算,1表示以當前位置為原點計算。2表示以文件末尾為原點進行計算

read方法——讀取文件

f = open(‘manage.py‘,‘r‘,encoding=‘utf-8‘)
print(f.tell())
text = f.read()
print(text)
f.close()

文件指針表示從哪個位置開始讀取數據

第一次打開文件時,指針指向文件的開始位置

當執行了read方法後,指針指向文件的末尾,再次調用不會讀取到任何內容

打開文件的方式

模式 說明
r 以只讀方式打開文件,文件的指針將會放在文件的開頭,這是默認模式,如果文件不存在,拋出異常
w 以只寫方式打開文件,如果文件存在會被覆蓋,如果文件不存在,創建新文件
a 以追加方式打開文件,如果該文件已存在,文件指針將會放在文件的結尾,如果文件不存在,創建新文件進行寫入
r+ 以讀寫方式打開文件,文件的指針將會放在文件的開頭,如果文件不存在,拋出異常
w+ 以讀寫方式打開文件,如果文件存在會被覆蓋,如果文件不存在,創建新文件
a+ 以讀寫方式打開文件,如果該文件已存在,文件指針將會放在文件的結尾,如果文件不存在,創建新文件進行寫入

逐行讀取

read方法默認會把文件的所有內容一次性讀入到內存中

如果文件過大,對內存的占用非常恐怖

readline方法可以一次讀取一行內容

方法執行後,會把文件的指針指向下一行

復制文件

小文件復制

打開一個文件,讀取全部內存,並寫入到另一個文件中

# 1. 打開文件
file_read = open("README")
file_write = open("README.bak", "w")

# 2. 讀取並寫入文件
text = file_read.read()
file_write.write(text)

# 3. 關閉文件
file_read.close()
file_write.close()

大文件復制

# 1. 打開文件
file_read = open("README")
file_write = open("README.bak", "w")

# 2. 讀取並寫入文件
while True:
    # 每次讀取一行
    text = file_read.readline()

    # 判斷是否讀取到內容
    if not text:
        break

    file_write.write(text)

# 3. 關閉文件
file_read.close()
file_write.close()

No.3 文件/目錄的常用管理操作

在終端/資源管理器、 中可以執行常規的文件/目錄管理操作 ,如果希望通過代碼來實現,需要導入os模塊

文件操作

方法 說明 示例
rrename 重命名文件 os.rename(文件名)
remove 刪除文件 os.remove(文件名)

目錄操作

方法 說明 示例
listdir 目錄列表 os.listdir(目錄名)
mkdir 創建目錄 os.mkdir(目錄名)
rmdir 刪除目錄 os.rmdir(目錄名)
getcwd 獲取當前目錄 os.getcwd()
chdir 修改工作目錄 os.chdir(目標目錄)
path.isdir 判斷是否是文件 os.path.isdir(文件路徑)

No.4 文本文件的編碼轉換

技術分享圖片

No.5 with上下文管理

with open("demo","r",encoding="utf-8") as f: #自動關閉並釋放文件資源
    for line in f:
        print(line)

with open("demo","r",encoding="utf-8") as f,     open("demo.bak","w",encoding="utf-8") as f2:
    for line in f:
        print(line)
        f2.write(line)

Python全棧開發之文件操作