[英]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.