計算機中的文件,就是存儲在某種長期儲存設(shè)備上的一段數(shù)據(jù)流
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)提供從項目策劃、軟件開發(fā),軟件安全維護(hù)、網(wǎng)站優(yōu)化(SEO)、網(wǎng)站分析、效果評估等整套的建站服務(wù),主營業(yè)務(wù)為網(wǎng)站制作、成都網(wǎng)站設(shè)計,重慶App定制開發(fā)以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。創(chuàng)新互聯(lián)深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
計算機中的文件,可以在需要的時候使用
文本文件
可以使用文本編輯器查看
本質(zhì)上還是二進(jìn)制文件
二進(jìn)制文件
保留的內(nèi)容不能直接查看,而是提供給其他軟件查看
圖片、音頻、視頻等都是二進(jìn)制文件
打開文件
讀寫文件
關(guān)閉文件
函數(shù) | 說明 |
---|---|
fp.read([size]) | size為讀取的長度,以byte為單位 |
fp.readline([size]) | 讀一行,如果定義了size,有可能返回的只是一行的一部分 |
fp.readlines([size]) | 把文件每一行作為一個list的一個成員,并返回這個list |
fp.write(str) | 把str寫到文件中,write()并不會在str后加上一個換行符 |
p.writelines(seq) | 把seq的內(nèi)容全部寫到文件中(多行一次性寫入) |
fp.close() | 關(guān)閉文件 |
fp.flush() | 把緩沖區(qū)的內(nèi)容寫入硬盤 |
fp.fileno() | 返回一個長整型的文件標(biāo)簽 |
fp.tell() | 返回文件操作標(biāo)記的當(dāng)前位置,以文件的開頭為原點 |
fp.next() | 返回下一行,并將文件操作標(biāo)記位移到下一行 |
fp.seek(offset[,whence]) | 將文件打操作標(biāo)記移到offset的位置。這個offset一般是相對于文件的開頭來計算的,一般為正數(shù), whence可以為0表示從頭開始計算,1表示以當(dāng)前位置為原點計算。2表示以文件末尾為原點進(jìn)行計算 |
f = open('manage.py','r',encoding='utf-8')
print(f.tell())
text = f.read()
print(text)
f.close()
文件指針表示從哪個位置開始讀取數(shù)據(jù)
第一次打開文件時,指針指向文件的開始位置
當(dāng)執(zhí)行了read方法后,指針指向文件的末尾,再次調(diào)用不會讀取到任何內(nèi)容
模式 | 說明 |
---|---|
r | 以只讀方式打開文件,文件的指針將會放在文件的開頭,這是默認(rèn)模式,如果文件不存在,拋出異常 |
w | 以只寫方式打開文件,如果文件存在會被覆蓋,如果文件不存在,創(chuàng)建新文件 |
a | 以追加方式打開文件,如果該文件已存在,文件指針將會放在文件的結(jié)尾,如果文件不存在,創(chuàng)建新文件進(jìn)行寫入 |
r+ | 以讀寫方式打開文件,文件的指針將會放在文件的開頭,如果文件不存在,拋出異常 |
w+ | 以讀寫方式打開文件,如果文件存在會被覆蓋,如果文件不存在,創(chuàng)建新文件 |
a+ | 以讀寫方式打開文件,如果該文件已存在,文件指針將會放在文件的結(jié)尾,如果文件不存在,創(chuàng)建新文件進(jìn)行寫入 |
read方法默認(rèn)會把文件的所有內(nèi)容一次性讀入到內(nèi)存中
如果文件過大,對內(nèi)存的占用非??植?/p>
readline方法可以一次讀取一行內(nèi)容
方法執(zhí)行后,會把文件的指針指向下一行
小文件復(fù)制
打開一個文件,讀取全部內(nèi)存,并寫入到另一個文件中
# 1. 打開文件
file_read = open("README")
file_write = open("README.bak", "w")
# 2. 讀取并寫入文件
text = file_read.read()
file_write.write(text)
# 3. 關(guān)閉文件
file_read.close()
file_write.close()
大文件復(fù)制
# 1. 打開文件
file_read = open("README")
file_write = open("README.bak", "w")
# 2. 讀取并寫入文件
while True:
# 每次讀取一行
text = file_read.readline()
# 判斷是否讀取到內(nèi)容
if not text:
break
file_write.write(text)
# 3. 關(guān)閉文件
file_read.close()
file_write.close()
在終端/資源管理器、 中可以執(zhí)行常規(guī)的文件/目錄管理操作 ,如果希望通過代碼來實現(xiàn),需要導(dǎo)入os模塊
方法 | 說明 | 示例 |
---|---|---|
rrename | 重命名文件 | os.rename(文件名) |
remove | 刪除文件 | os.remove(文件名) |
方法 | 說明 | 示例 |
---|---|---|
listdir | 目錄列表 | os.listdir(目錄名) |
mkdir | 創(chuàng)建目錄 | os.mkdir(目錄名) |
rmdir | 刪除目錄 | os.rmdir(目錄名) |
getcwd | 獲取當(dāng)前目錄 | os.getcwd() |
chdir | 修改工作目錄 | os.chdir(目標(biāo)目錄) |
path.isdir | 判斷是否是文件 | os.path.isdir(文件路徑) |
with open("demo","r",encoding="utf-8") as f: #自動關(guān)閉并釋放文件資源
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)