簡體   English   中英

boto3是否可以使用readlines?

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

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