Python全棧開發之文件操作
阿新 • • 發佈:2018-09-30
開始 文件的 只讀 示例 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全棧開發之文件操作