2010-06-29 8 views
6

getan, was ich einen solchen Code haben:Python: Überprüfung, wenn shutil.copyfile ist

for file in file_list: 
    shutil.copyfile(file,newpath) 
#do further actions 

Und hier ist die Frage, bei #do further actions verwende ich die kopierten f iles also muss ich sicherstellen, dass die shutil.copyfile Funktionen beenden ihre Aufgabe. Wie kann ich das sicherstellen?

Antwort

5

Die Shut-Funktionen sollten erst nach dem Ende des Vorgangs zurückkehren. Wenn auf Betriebssystemebene nichts Lustiges passiert, sollte es auf diese Weise sicher sein.

Wenn Sie die Größe der Datei kennen, können Sie überprüfen, ob das korrekt ist.

+2

Moderne Betriebssysteme führen auf Dateisystemebene ein hohes Caching durch (in modernen Linux-Distributionen kann es bis zu einer Minute dauern, bis die Daten tatsächlich geschrieben werden), und die Plattencontroller führen zusätzliches Caching durch. Letzteres kann natürlich nicht von Anwendungen gesteuert werden. – Philipp

+0

Die richtigen (zwischengespeicherten) Daten sollten jedoch zurückgegeben werden, wenn eine Anwendung die Datei anfordert. Ich habe mehr über NFS mit der Async-Option oder etwas Ähnliches nachgedacht. –

+0

In meinem Fall habe ich abhängige Subprozesse ohne '.wait()' ing ausgeführt, um sie zu beenden. – ThorSummoner

3

copyfile ist eine blockierende Funktion. Bis Sie zu #do further actions kommen, sollte es immer getan werden. Hast du Probleme, wo es nicht ist?