将数组、dict、list打印到Python上的文本文件中

2024-09-20 00:00:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着把一个文件名的列表或目录打印成一个文本文件。它目前只返回列表中的第一项。这些项目是从s3aws获取的,我使用的是python2.6

for obj in bucket.objects.filter(Prefix=prefix):
      s = obj.key
      with open('test.txt', 'w') as f:
          f.write(s)

Tags: 项目keyin目录obj列表forprefix
2条回答

无论何时打开文件进行写入,都会删除以前的内容并写入新文本。因此,在本例中,您将删除在下一次迭代中写入文件的内容。您可以这样做,也可以在“附加”模式下打开文件并继续编写。你知道吗

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

这里的问题是,对于每个项目,您创建一个新的文件(如果文件已经存在,可以说您删除了内容),然后向其写入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')

相关问题 更多 >