Python全棧開發之文件操做

No.1 文件的概念

文件的概念和做用

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

計算機中的文件,能夠在須要的時候使用ide

文件的存儲方式

文本文件函數

可使用文本編輯器查看編碼

本質上仍是二進制文件指針

二進制文件code

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

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

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 文本文件的編碼轉換

Python全棧開發之文件操做

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)
相關文章
相關標籤/搜索