open read readline readlines 初階
測試文件train_data.txt
以下是部分數據
4.45925637575900 8.22541838354701 0
0.0432761720122110 6.30740040001402 0
6.99716180262699 9.31339338579386 0
4.75483224215432 9.26037784240288 0
8.66190392439652 9.76797698918454 0
···
···
4.15244831176753 1.44597290703838 1
9.55986996363196 1.13832040773527 1
1.63276516895206 0.446783742774178 1
9.38532498107474 0.913169554364942 1
1.open
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file:文件路徑
mode:文件打開模式
r:以只讀方式打開文件(默認)
w:以寫入的方式打開文件,會覆蓋已存在的文件
x:如果文件已經存在,使用此模式打開會引發異常
a:以寫入模式打開,如果文件存在,則在末尾追加寫入
b:以二進制模式打開文件
t:以文本模式打開(默認)
+:可讀寫模式
U:通用換行符支持
open下面的函數:
f.close()—-關閉文件
f.read()—-讀取字符
f.readline()—-以寫入模式打開,如果文件已存在,則在末尾追加
f.write(str)—-將字符串str寫入文件
f.writeline(seq)—-寫入字符串序列,返回迭代對象
f.seek(offset,from)—-from(0表示文件的起始位置,1代表當前位置,2代表文件末尾)偏移offset個位置
f.tell()—-返回當前在文件中的位置
example:
f = open("train_data.txt")
In[2]: f
Out[2]: <_io.TextIOWrapper name='train_data.txt' mode='r' encoding='UTF-8'>
此時出來的是一個io.text,我們還需要read才能看裏面的數據。
2.read
read() #return one big string
官網說返回一個大字符串,這個函數也確實將文件裏面的東西以字符串的形式返回。
f = open("train_data.txt")
ff = f.read()
3.readline
顧名思義,就是一次讀一行。
f = open("train_data.txt")
f1 = f.readline()
此時顯示的是第一行:
4.45925637575900 8.22541838354701 0
但是readline是記錄文件指針的,再次執行readline(),會跳到下一行。
f = open("train_data.txt")
f1 = f.readline()
f2 = f.readline()
結果就是:
f1
Out[22]: '4.45925637575900\t8.22541838354701\t0\n'
f2
Out[23]: '0.0432761720122110\t6.30740040001402\t0\n'
到達最後一行接着readline就是顯示''
f5
Out[29]: ''
4.readlines
官方說返回一個list
readlines #returns a list of lines
感覺readlines跟read差不多,都是直接把文件全部返回。但是,read返回的是string,readlines返回的是list。