2017-12-19 7 views
1

Ich versuche, eine Liste oder ein dict von Dateinamen in eine Textdatei zu drucken. Es gibt derzeit nur das erste Element auf der Liste zurück. die Einzelteile sind geholt von s3 Aws.I'm Python mit 2,6Drucken Sie ein Array, dict, Liste in eine Textdatei auf Python

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

Also für jedes Element, erstellen Sie eine * neue * Datei 'test.txt' und schreiben Sie dieses bestimmte Objekt in die Datei? –

+0

Tatsächlich gibt es das * letzte * Element zurück. –

+0

Ich versuche, alle Elemente in die Liste zurückzugeben. – user3821872

Antwort

1

, wenn Sie eine Datei zum Schreiben öffnen, wird der vorherige Inhalt gelöscht und neuer Text geschrieben wird. In diesem Fall löschen Sie in der nächsten Iteration, was auch immer Sie in die Datei geschrieben haben. Sie können es auf diese Weise tun oder öffnen Sie die Datei im "Append" -Modus und fahren Sie mit dem fort, was Sie geschrieben haben.

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

Das Problem hierbei ist, dass für jeden Artikel erstellen Sie eine neue Datei (falls die Datei bereits vorhanden ist, können Sie das Entfernen Inhalt sozusagen), und schreiben Sie dann s zu ihm.

Sie sollten also die Ordnung der Dinge tauschen sich hier:

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)

So halten wir die Datei geöffnet handhaben, und jedes Element geschrieben werden. Ein potentielles Problem ist, dass Sie keine neue Zeile schreiben, nachdem Sie den Schlüssel eines Objekts geschrieben haben. Wir können dies tun, indem sie eine neue Linie als auch das Schreiben:

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

können Sie es so machen, dass das Format nicht ist. 12345 und stattdessen 1,2,3,4,5 und/oder Newline – user3821872

+0

@ user3821872: die Formatierung ist nicht was? Die zweite Implementierung schreibt neue Zeilen zwischen den Schlüsseln ... –

+0

phantastisch DANKE EIN BUNCH – user3821872

Verwandte Themen