参考: http://www.jb51.net/article/45956.htm
参考: http://www.jb51.net/article/57241.htm
python逐行读取文件的三种方法
方法一:
f = open("foo.txt") # 返回一个文件对象
line = f.readline() # 调用文件的 readline()方法
while line:
print line, # 后面跟 ',' 将忽略换行符
# print(line, end = '') # 在 Python 3中使用
line = f.readline()
f.close()
方法二:
for line in open("foo.txt"):
print line,
方法三:
f = open("c:\\1.txt","r")
lines = f.readlines()#读取全部内容
for line in lines
print line
python中readline判断文件读取结束的方法
readline() 和 .readlines() 非常相似。它们都在类似于以下的结构中使用:
Python .readlines()
示例如下:
fh = open('c:\autoexec.bat')
for line in fh.readlines():
print line
.readline() 和 .readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理。另一方面,.readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline()。
readlines返回行数问题
官方文档这样写的:
If the optional sizehint argument is present, instead of reading up to EOF, whole lines totalling approximately sizehint bytes (possibly after rounding up to an internal buffer size) are read.
确实是指定大小啊并且会受内部缓冲区大小影响向上取整到内部缓冲区大小。内部缓冲区大约是8k也难怪我每次测试文件大小都是8k(8192)倍数
#!/usr/bin/env python
f=open('a.txt').readlines(1)
open('b.txt','w').writelines(f)
open('c.txt','w').writelines(open('a.txt').readlines(200))
open('d.txt','w').writelines(open('a.txt').readlines(9200))
open('e.txt','w').writelines(open('a.txt').readlines(26000))
open('f.txt','w').writelines(open('a.txt').readlines(40000))