簡體   English   中英

python讀取帶有塊的文件,但以換行符結尾(\\ n)

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM