1、文件的打開方式python
文件打開方法: open(name[,mode][,buf][,encoding])linux
參數解釋:name 文件路徑緩存
mode 打開方式函數
buf:緩衝buffering大小編碼
encoding: 文件的編碼格式spa
文件打開方式:指針
2、文件的讀取code
read():讀取整個文件對象
read(size):讀取size個字節blog
readline([size]):讀取一行
readlines([size]):讀取buffering個字節,返回每一行所組成的列表
iter():使用迭代器讀取文件
給出一個文本文件:E://ME.txt,內容以下:
說給本身聽 ---三毛 若是有來生, 要作一棵樹, 站成永恆, 沒有悲歡的姿式, 一半在土裏安詳, 一半在風裏張揚, 一半灑落陰涼, 一半沐浴陽光, 很是沉默很是驕傲, 從不依靠,從不尋找。
#使用read()方法
f=open("E://ME.txt","r",encoding="utf-8"); data=f.read(); print(data);
執行結果以下:
說給本身聽
---三毛
若是有來生,
要作一棵樹,
站成永恆,
沒有悲歡的姿式,
一半在土裏安詳,
一半在風裏張揚,
一半灑落陰涼,
一半沐浴陽光,
很是沉默很是驕傲,
從不依靠,從不尋找。
#使用read(size)方法
f=open("E://ME.txt","r",encoding="utf-8"); data=f.read(30); print(data);
執行結果以下:
說給本身聽
---三毛
如
#使用readline()方法
f=open("E://ME.txt","r",encoding="utf-8"); data=f.readline(); print(data);
執行結果以下:
說給本身聽
#使用readline(30)方法:
f=open("E://ME.txt","r",encoding="utf-8");
data=f.readline(10);
data1=f.readline(10);
print(data);
print(data1);
執行結果以下:
說
給本身聽
#使用readlines()方法
f=open("E://ME.txt","r",encoding="utf-8"); data=f.readlines(); print(data);
執行結果以下:
['\ufeff\t\t\t\t\t\t\t\t說給本身聽\n', '\t\t\t\t\t\t\t\t---三毛\n', '若是有來生,\n', '要作一棵樹,\n', '站成永恆,\n', '沒有悲歡的姿式,\n', '一半在土裏安詳,\n', '一半在風裏張揚,\n', '一半灑落陰涼,\n', '一半沐浴陽光,\n', '很是沉默很是驕傲,\n', '從不依靠,從不尋找。']
#使用readlines(size)方法
f=open("E://ME.txt","r",encoding="utf-8"); data=f.readlines(1); data1=f.readline(2); data2=f.readlines(3); print(data); print(data1); print(data2);
執行結果以下:
['\ufeff\t\t\t\t\t\t\t\t說給本身聽\n']
['\t\t\t\t\t\t---三毛\n']
發現readlines(size)這個方法的運行結果和咱們的預期不太同樣。
這是因爲存在IO緩衝區,緩衝區的大小爲:8192.
#使用迭代器讀取文件
f=open("E://ME.txt","r",encoding="utf-8"); iter_f=iter(f);#把文件對象轉爲迭代器對象 for i in iter_f: print(i,end="");
執行結果爲:
說給本身聽
---三毛
若是有來生,
要作一棵樹,
站成永恆,
沒有悲歡的姿式,
一半在土裏安詳,
一半在風裏張揚,
一半灑落陰涼,
一半沐浴陽光,
很是沉默很是驕傲,
從不依靠,從不尋找。
使用read()/readline()/readlines()會把文件整個加載到內存中去,極大的浪費內存,咱們採用迭代器的方式能夠節約內存。
3、文件寫入
write(str):將字符串寫入文件
writelines(strings):將多行寫到文件
#使用write()方法
f=open("E://ME.txt","a+",encoding="utf-8"); data="\n\n夢想,能夠天花亂墜"; f.write(data);
此時,其實只是對內存中的數據進行了修改,磁盤中的數據並無被修改。只有調動flush()/close()方法,修改後的數據纔會寫入磁盤。
使用writelines()方法;
f=open("E://ME.txt","a+",encoding="utf-8"); data1=[ "心,若沒有棲息的地方,到哪裏都是流浪", "飛蛾撲火時,必是極快樂幸福的", "今日的事情,盡心、盡意、盡力去作了,不管成績如何,都應該高高興興地在牀上恬睡。" ] f.writelines(data1);
f.close()
此時,其實只是對內存中的數據進行了修改,磁盤中的數據並無被修改。只有調動flush()/close()方法,修改後的數據纔會寫入磁盤。
python寫磁盤時機
1.主動調用close()/flush()方法,寫緩存同步到磁盤
2。寫入數據量大於等於寫緩存,寫緩存同步到磁盤
4、文件指針
文件指針操做:
seek(offset,[whence])
offset:偏移量,能夠爲負數
whence:偏移至關位置,其取值有如下三個:
一、os.SEEK_SET:相對文件起始位置
二、os.SEEK_CUR:相對文件當前位置
三、os.SEEK_END:相對文件結束位置
tell():tell函數的做用是顯示當前指針位置
import os; f=open("E://ME.txt","r+",encoding="utf-8"); f.read(3); print(f.tell()); f.seek(0,os.SEEK_SET) print(f.tell());
執行結果爲:
5
3
使用seek()函數,咱們能夠定義到文件的任意一個位置。
5、文件關閉
爲何要關閉文件?
1.將寫緩存同步到磁盤
二、linux系統中,每一個進程打開文件的個數是有限制的,若是超過了系統限制,再打開文件就會失敗。
關閉文件,其實就是調用close()函數。