Es ist völlig in Ordnung, jede Datei mit open
und später close
alle von ihnen zu öffnen. Sie sollten jedoch sicherstellen, dass alle Ihre Dateien ordnungsgemäß geschlossen sind.
Normalerweise würden Sie dies für eine Datei tun:
with open(filename,'w') as f:
do_something_with_the_file(f)
# the file is closed here, regardless of what happens
# i.e. even in case of an exception
Sie könnten das gleiche mit mehreren Dateien tun:
with open(filename1,'w') as f1, open(filename2,'w') as f2:
do_something_with_the_file(f)
# both files are closed here
Nun, wenn Sie N-Dateien haben, können Sie Ihre eigenen schreiben Kontext-Manager, aber das wäre wahrscheinlich ein Overkill. Stattdessen würde ich vorschlagen:
open_files = []
try:
for filename in list_of_filenames:
open_files.append(open(filename, 'w'))
# do something with the files here
finally:
for file in open_files:
file.close()
BTW, Ihr eigener Code deltes den Inhalt aller Dateien im gegenwärtigen Verzeichnis. Ich bin nicht sicher, dass Sie wollten, dass:
for file in os.listdir(os.curdir):
files.append(open(file,'w')) # open(file,'w') empties the file!!!
Vielleicht wollte man open(file, 'r')
oder open(file, 'a')
statt? (siehe https://docs.python.org/2/library/functions.html#open)
Haben Sie versucht, den Code auszuführen? – Goyo
Ya Ich bin nur sicher, ob es logisch falsch war –
Sie können dies tun, aber es scheint nicht wie ein guter Ansatz. Warum nicht einfach jede Datei öffnen, verarbeiten und dann schließen? –