[英]Is it possible to use readlines with boto3?
我正在嘗試對S3中存儲的兩個文件運行diff,並希望盡可能避免下載文件。
我正在使用的示例代碼是這樣的:
import difflib
file1 = open('sample1.csv', 'r');
file2 = open('sample2.csv', 'r');
diff = difflib.ndiff(file1.readlines(), file2.readlines())
我看到帶有boto3包,可以從S3打開文件,但是如何將等效的file1.readlines()和file2.readlines()傳遞給ndiff函數呢?
對於將來的讀者,我將回答確切的問題“是否可以在boto3中使用閱讀行?”
import io
// import stuff and set up s3_client
body = s3_client.get_object(Bucket=bucket, Key=key)['Body']
stream = io.BufferedReader(body._raw_stream)
stream.readlines()
正如對該問題的評論所指出的那樣,readlines()將所有內容都拉到內存中,這就是為什么您可以向其傳遞提示,以便“如果到目前為止所有行的總大小(以字節/字符為單位)都超出,將不再讀取行暗示。” ( https://docs.python.org/2/library/io.html#io.IOBase.readlines )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.