2017-11-10 468 views
1

我想從塊標準輸入塊讀取,直到EOF。例如,我可能有一個非常大的文件,並且我想從STDIN一次讀入並處理1024個字節,直到遇到EOF。我看到了sys.stdin.read(),它將所有內容都一次保存在內存中。這是不可行的,因爲可能沒有足夠的空間來存儲整個文件。還有一個「sys.stdin中的行」,但是它僅通過換行符分隔輸入,這不是我正在尋找的內容。有什麼辦法可以在Python中完成這個任務嗎?Python:如何從標準輸入讀取字節塊直到EOF?

回答

1

文件對象的read()方法接受可選的size參數。

如果指定size,則讀取並返回至多大小的字節。如果文件已達到,f.read()將返回一個空字符串('')。

查看io docsopen() docs

僞代碼:

with open('file') as f: 
    while True: 
     buffer = f.read(1024) # Returns *at most* 1024 bytes, maybe less 
     if buffer = '': 
      break 
     process_data(buffer) 
+0

啊,我很想念那個傻。謝謝! –

0

您可以閱讀使用f.read(n),其中n是你想讀作爲參數字節的整數塊標準輸入(或任何文件)。如果文件中沒有任何內容,它將返回空字符串。