[英]python read file with block, but end with newline(\n)
test.txt是一个“ \\ n”拆分文本文件:
f =打开('test.txt','r')f.read(256)
但是,当读取256时,最后的记录可能没有完整的行。
如何阅读如:
我将读取设置为256,但是当248是“ \\ n”并且256时,没有完整行的最后一条记录只是读取248,而f.tell()给出248的位置。
谢谢。
如果您使用换行符分割数据,为什么不以相同的方式读取数据?
with open('test.txt', 'r') as f:
lines = f.readlines()
# Now each line in lines is a complete line.
您要阅读的是整行。 对于此任务,通常需要执行此操作。
size_so_far = 0
contents = []
for line in open('test.txt'):
size_so_far += len(line)
if size_so_far > 256:
break
contents.append(line)
contents = "".join(contents)
读取带有可变长度的行的文件的最简单方法是用'\\n'
, '\\r'
或'\\r\\n'
任何一个或什至是它们的混合物来分隔:
with open('yourfile.txt', 'rU') as f:
for line in f:
do_something_with(f)
# optional, if you want to bale out after 256 bytes:
if f.tell() >= 256: break
这样做是读取大块,找到行的结尾,然后一次产生一行。 底层代码是用C编写的。我还没有看到任何证据表明用Python代码做同样的事情会更快。
您关心效率吗?
这是一种实现方法:
data=f.read(256)
data=data.splitlines(True)
if data[-1]!=data[-1].splitlines()[-1]:
#must be newline at end of last line
data="".join(data)
else:
data="".join(data[:-1])
print data
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.