2024-09-20 00:00:29 发布
网友
我正试着把一个文件名的列表或目录打印成一个文本文件。它目前只返回列表中的第一项。这些项目是从s3aws获取的,我使用的是python2.6
for obj in bucket.objects.filter(Prefix=prefix): s = obj.key with open('test.txt', 'w') as f: f.write(s)
无论何时打开文件进行写入,都会删除以前的内容并写入新文本。因此,在本例中,您将删除在下一次迭代中写入文件的内容。您可以这样做,也可以在“附加”模式下打开文件并继续编写。你知道吗
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。你知道吗
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')
无论何时打开文件进行写入,都会删除以前的内容并写入新文本。因此,在本例中,您将删除在下一次迭代中写入文件的内容。您可以这样做,也可以在“附加”模式下打开文件并继续编写。你知道吗
这里的问题是,对于每个项目,您创建一个新的文件(如果文件已经存在,可以说您删除了内容),然后向其写入
s
。你知道吗所以你应该在这里交换顺序:
所以我们保持文件句柄打开,每个条目都会被写入。一个潜在的问题是,在写入对象的键之后,您将不会写入新行。我们也可以写一行新词:
相关问题 更多 >
编程相关推荐