python 基础 文本文件的操作
一? 文件介紹
? ? ? 1.什么是文件
狹義說:文本文件;廣義說:超文本文件, 圖片,聲音,超鏈接,視頻。
? ? ? ?2.文件的分類
文件大體上可以分為兩類,文件文件和二進制文件。
? ? ? ?3.文件的作用
使用文件的目的是把一些數(shù)據(jù)存儲存放起來。
? ? ? ? 4.使用文件的流程
我們操作一個文件的流程一般是打開文件,讀寫文件,關(guān)閉文件。通過程序操作文件的流程也是這三步,首先打開文件,然后讀寫文件,最后關(guān)閉文件
二 讀寫文件簡單操作
基于文件的操作? ?有如下方法? ? 我們通過代碼會列舉介紹
| 讀取操作 | r | 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。 |
| rb | 以二進制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。一般用于非文本文件如圖片等。 | |
| r+ | 打開一個文件用于讀寫。文件指針將會放在文件的開頭。 | |
| rb+ | 以二進制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。一般用于非文本文件如圖片等。 | |
| 寫操作 | w | 打開一個文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內(nèi)容會被刪除。如果該文件不存在,創(chuàng)建新文件。 |
| wb | 以二進制格式打開一個文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內(nèi)容會被刪除。如果該文件不存在,創(chuàng)建新文件。一般用于非文本文件如圖片等。 | |
| w+ | 打開一個文件用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內(nèi)容會被刪除。如果該文件不存在,創(chuàng)建新文件。 | |
| wb+ | 以二進制格式打開一個文件用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內(nèi)容會被刪除。如果該文件不存在,創(chuàng)建新文件。一般用于非文本文件如圖片等。 | |
| a | 打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進行寫入。 | |
| ab | 以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進行寫入。 | |
| a+ | 打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結(jié)尾。文件打開時會是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。 | |
| ab+ | 以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫。 |
?
1? 讀文件? ?read
r
file = open('file/a.txt',mode = 'r') ret = file.read() #讀取文件中的所有內(nèi)容 print(ret) file.close()file叫做文件句柄,或者文件對象? 用來操作文件
第一個參數(shù)是文件的路徑,第二個參數(shù)? mode=? 是訪問文件的模型? ?r 表示讀? 默認也是r 模式
rb? ??
file = open('121.jpg',mode='rb') ret = file.read() print(ret) file.close()""" b'\xff\xd8\xff\xe1\x000Exif\x00\x00MM\x00*\x00\x00\x00\x08\x00\x01\x011\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x1a\x00\x00\x00\x00www.meitu...... """r+
file = open('aa.txt',mode='r+') ret = file.read() print(ret) file.close()""" abcdefg #指會放在文件的開頭,下次操作時時會從光標(biāo)處開始 hijklmn """2 寫操作? wirte
w? ? ? 只用于寫入
?注意? 1文件不存在,會創(chuàng)建文件(不會創(chuàng)建目錄)? 2? 會覆蓋掉源文件的內(nèi)容重新寫入?
file = open('1ji/bb.txt',mode='w') file.write('zzz') file.close()w+? ?可用于讀寫? 其他作用和w一致
file = open('1ji/bb.txt',mode='w+') file.write('zzzaaa') ret = file.read() #讀出的內(nèi)容為空 因為光標(biāo)的位置在最后 print(ret) file.close()a? ? 追加? 和 w不同的是,a 所添加的內(nèi)容是追加在文件后邊的,不會覆蓋之前文件的內(nèi)容? ?同樣,如果文件不存在,則會創(chuàng)建一個新的文件
file = open('1ji/bb.txt',mode='a') file.write('zzzaaa') file.close()a+? ?a+可以進行讀寫??
file = open('1ji/bb.txt',mode='a+') file.write('zzzaaa') ret = file.read() #讀出的內(nèi)容為空 因為光標(biāo)的位置在最后 print(ret) file.close()具體操作
read()
調(diào)用read()會一次性讀取文件的全部內(nèi)容,如果文件有10G,內(nèi)存就爆了,會容易導(dǎo)致程序卡死,所以,要保險起見,可以反復(fù)調(diào)用read(size)方法,每次最多讀取size個字節(jié)的內(nèi)容
file = open('aa.txt') ret = file.read(3) print(ret) file.close()readline()
readline? 每次讀取一行,并且自帶換行功能,每一行末尾會讀到\n
file = open('1ji/bb.txt') ret = file.readline() print(len(ret)) print(ret) print(file.readline()) print(file.readline(3)) file.close()""" 6 qwertasdaa """readlines()
一次性以行的形式讀取文件的所有內(nèi)容并返回一個list,需要去遍歷讀出來
file = open('1ji/bb.txt') ret = file.readlines() print(ret)''' ['qwert\n', 'asdaa\n', 'ssssa'] '''循環(huán)讀取
file句柄是一個可迭代的對象,因此,可以循環(huán)讀取文件中的內(nèi)容 每次只讀一行
file = open('1ji/bb.txt') for line in file:print(line)qwertasdaassssawrite()
file = open('1ji/bb.txt',mode='w') file.write('aaaaa') file.write('bbb') file.close()writelines()
file.writelines(seq)? 把seq的內(nèi)容全部寫到文件中(多行一次性寫入)
file = open('1ji/bb.txt',mode='w') lst = ['aa\n','bb','cc'] file.writelines(lst) file.close()""" aa bbcc """其他操作
1 tell
獲取文件當(dāng)中當(dāng)前光標(biāo)所在的位置
file = open('1ji/bb.txt',mode='r') ret = file.read(3) pos = file.tell() print(pos) print(ret) file.close()""" 4 aa """seek()
seek 移動光標(biāo)位置
參數(shù):
offset? 移動的長度(字節(jié))
whence? 相對位置 0 從頭(默認),1從當(dāng)前 2從末尾
file = open('1ji/bb.txt',mode='r') print(file.read(3)) # file.seek(0,0) file.seek(0,1) # file.seek(0,2) #空 ret= file.read(3) print(ret) file.close()name 和 mode??
file.name? 返回? 路徑
file.mode? 返回? 文件讀寫模式
file = open('1ji/bb.txt','r') print(file.name) #返回路徑 1ji/bb.txt print(file.mode) # r file.close()with
使用with方式操作文件,可以不用關(guān)閉文件,會自動關(guān)閉文件。
with open('1ji/bb.txt') as file:ret = file.read()print(ret)亂碼??
python讀寫文件時,默認使用的編碼為平臺編碼,也就是gbk。
在pycharm中創(chuàng)建的文件默認使用的是utf-8編碼
1,往pycharm中的1ji.bb中保存內(nèi)容
with open('1ji/bb.txt',mode='w',) as file:file.write('哈哈')2 向磁盤中文件保存內(nèi)容能,不亂碼。
指定編碼
with open('1ji/bb.txt',mode='w',encoding='utf-8') as file:file.write('哈哈')總結(jié)
以上是生活随笔為你收集整理的python 基础 文本文件的操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GNURadio RTL-SDR之FM接
- 下一篇: frida hook实例