在Python上打印数组,字典,列表到文本文件

问题描述 投票:1回答:2

我正在尝试将文件名列表或字典打印到文本文件中。它目前只返回列表中的第一项。这些项目是从s3 Aws获取的。我使用的是Python 2.6

for obj in bucket.objects.filter(Prefix=prefix):
      s = obj.key
      with open('test.txt', 'w') as f:
          f.write(s)
python list amazon-web-services amazon-s3 python-2.6
2个回答
1
投票

无论何时打开文件进行写入,都会删除先前的内容并写入新文本。因此,在这种情况下,您将删除在下一次迭代中写入文件的任何内容。您可以这样做或以“追加”模式打开文件并继续您所写的内容。

f= open("test.txt", "w")
for obj in bucket.objects.filter(Prefix=prefix):
      s = obj.key
      f.write(s)
      f.write('\n)
f.close()

2
投票

这里的问题是,对于每个项目,您创建一个新文件(如果该文件已存在,您可以删除内容),然后将s写入其中。

所以你应该在这里交换事物的顺序:

with open('test.txt', 'w') as f:  # first open the file
    for obj in bucket.objects.filter(Prefix=prefix):  # then iterate
        f.write(obj.key)

因此我们保持文件句柄处于打开状态,并且每个项目都将被写入。一个潜在的问题是在写入对象的键后不会写新行。我们也可以通过写一个新行来做到这一点:

with open('test.txt', 'w') as f:
    for obj in bucket.objects.filter(Prefix=prefix):
        f.write(obj.key)
        f.write('\n')
© www.soinside.com 2019 - 2024. All rights reserved.