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。