小编fro*_*sty的帖子

使用 boto3 将大字符串流式传输到 S3

我正在从 S3 下载文件,转换其中的数据,然后创建一个新文件上传到 S3。我下载的文件不到 2GB,但因为我正在增强数据,所以当我上传它时,它非常大(200GB+)。

目前你可以想象的代码是这样的:

files = list_files_in_s3()
new_file = open('new_file','w')
for file in files:
    file_data = fetch_object_from_s3(file)
    str_out = ''
    for data in file_data:
        str_out += transform_data(data)
    new_file.write(str_out)
s3.upload_file('new_file', 'bucket', 'key')
Run Code Online (Sandbox Code Playgroud)

这样做的问题是“new_file”有时太大而无法放在磁盘上。因此,我想使用 boto3upload_fileobj以流形式上传数据,这样我根本不需要磁盘上的临时文件。

有人可以帮忙提供一个例子吗?Python 方法似乎与我熟悉的 Java 完全不同。

amazon-s3 python-3.x boto3

4
推荐指数
1
解决办法
5316
查看次数

如何修改子类的 __init__ 方法中的继承列表?

是否可以更改类的init函数中的某些内容?

假设我有一个名为“deck”的类,它在初始化时会创建一个包含 52 个卡片对象的列表。

现在我想创建另一个名为“even”的类,它继承自“deck”类并创建一副纸牌对象,但从继承的“deck”中消除所有数字为 2(如黑桃、红心等)的纸牌。

我在这方面遇到了很多麻烦,因为当我尝试修改继承的列表时,无论我尝试什么,python 都会返回错误,通常“NoneType”是问题的主要根源。这是“偶数”类初始化的代码:

def __init__(self):
    x = Deck.__init__(self)
    for card in x:
        if card.rank() == 2:
            x.pop(card)
    return x
Run Code Online (Sandbox Code Playgroud)

值得注意的是,我的卡片类有一个 rank() 方法,它将以 int 形式返回卡片的等级。

不管我尝试过所有的事情,它总是有问题。有时它会说“'NoneType' 对象不可迭代”或“可订阅”,当我检查 x 的 type() 时,它是一个 NoneType。我已经做了很多搜索,但对我来说 NoneType 或我应该做些什么来解决它没有任何意义。

如果我删除 for 循环,那么代码将按预期创建一副 52 张卡片,但例如我需要过滤掉 2 张卡片。

编辑:这是我的甲板类init

class Deck(list):
    def __init__(self):
        return list.__init__(self, [Card(i) for i in range(52)])
Run Code Online (Sandbox Code Playgroud)

如果你不知道, Card 也是一个类,deck的初始化创建了 52 个卡片对象

python inheritance init

1
推荐指数
1
解决办法
1760
查看次数

如何将'for i in range(x)'中的i附加到python中的标签?

我基本上有这个循环,我试图使它,以便GUI中的每个标签都有一个特定的名称,所以我可以单独更改它们.我希望它是cardlabelxy,其中x是行,y是列,但我不知道如何让它工作.这是我有的:

for i in range(2):
    for j in range(6):
        (cardlabel+'i'+'j') = CardLabel(root)
        (cardlabel+'i'+'j').grid(row=i, column=j)
        (cardlabel+'i'+'j').configure(image=CardLabel.blank_image)
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解释语法吗?如果我有,循环工作正常

for i in range(2):
    for j in range(6):
        cardlabel = CardLabel(root)
        cardlabel.grid(row=i, column=j)
        cardlabel.configure(image=CardLabel.blank_image)
Run Code Online (Sandbox Code Playgroud)

但他们都被称为卡片标签,我不想要.

python for-loop tkinter

1
推荐指数
1
解决办法
100
查看次数

标签 统计

python ×2

amazon-s3 ×1

boto3 ×1

for-loop ×1

inheritance ×1

init ×1

python-3.x ×1

tkinter ×1