学习的时候经常需要读取文件中的数据,今天写一个笔记记录一下
Python 读取文件一般需要三个步骤:1.打开,2读取,3关闭
1.打开文件:经常使用的是Python自带的open函数
open(...)
open(name[, mode[, buffering]]) -> file object
Open a file using the file() type, returns a file object. This is the
preferred way to open a file. See file.__doc__ for further information.
name:文件名(必须有)
mode:有很多种模式如只读(r),二进制读(rb),写(w),二进制写(wb)等(可以省略)
buffering:缓存(没有使用过,可以省略不用设置)
f = open(filename)
2.读取文件:文件的读取可以使用read、readline或者readlines
read:一次读取全部的文档,返回的是一个字符串。优点是速度快省事,缺点占用内存大;
f.read()
readline:一次只读取文档中的一行,返回的值是字符串型。优点:占用内存小,缺点:一次只能读取一行,速度慢比较麻烦
f.readline()
readlines:一次可以读取全部文档,返回值是一个列表,每行之间以"\r\n结束"。优点:一次读取全部内容,缺点:占用的内存大。
f.readlines()
3.关闭文档:Python对文件读取完成之后一定要使用close()关闭来释放资源。
f.close()
注:每次打开文档我们都需要相应的关闭文档的命令,为了简便我们使用with函数
with open(filename) as f:
例:以一个文档举例完整的读取一个txt文档
文档的内容:
with open("test.txt") as f:
contents = f.readlines()
print contents
打印的内容为一个list
['5837\t4.736156\t0.029871\tsmallDoses\r\n', '39808\t10.839526\t0.836323\tlargeDoses\r\n', '20944\t4.194791\t0.235483\tsmallDoses\r\n', '22146\t14.936259\t0.888582\tlargeDoses\r\n']
使用的txt文档中是以“\t”作为两个数据之间的间隔,“\r\n”作为两行间隔
import numpy as np
list1 = []
with open("test.txt") as f:
contents = f.readlines()
for content in contents:
con = content.strip().split('\t')
list1.append(con)
array = np.array(list1)
打印的内容为
['5837' '4.736156' '0.029871' 'smallDoses']
['39808' '10.839526' '0.836323' 'largeDoses']
['20944' '4.194791' '0.235483' 'smallDoses']
['22146' '14.936259' '0.888582' 'largeDoses']
对比其他的两种读取方法:
import numpy as np
list1 = []
with open("test.txt") as f:
contents = f.read().split("\r\n")
for content in contents:
if content:
con = content.split("\t")
list1.append(con)
array = np.array(list1)
import numpy as np
list1 = []
with open("test.txt") as f:
while True:
content = f.readline()
if not content:
break
con = content.strip().split("\t")
list1.append(con)