Ich versuche ein Python-Skript zu schreiben, das ein Verzeichnis als Eingabe nimmt und dieses Verzeichnis rekursiv durchsucht und die Dateinamen und ihre Größen in eine Datei ausgibt. Am Ende summiert es die Gesamtheit des Verzeichnisses. Die Ausgabe ist in Ordnung und passt zu dem, was ich brauche, aber alle Dateigrößen werden bei 4096 aufgelistet, wenn ich diesen Code im Verzeichnis /var
ausführe. Im Folgenden finden Sie den Code ein:Rekursiv summierender Dateiinhalt
#!/usr/bin/python
import os
#print usage for input directory and accepts input
print("Example: /home/cn")
input_file = raw_input("Enter the name of the directory: ")
#prints usage for output file and accepts input
print("Example: /home/cn/Desktop/output_test.txt")
output_file = raw_input("Enter the name of the output file: ")
#opens output file for writing, sets variable for directory size to 0
of = open(output_file, "w")
start_path = input_file
total_size = 0
#loops recursively, calculates directory size
for (path,dirs,files) in os.walk(start_path):
of.write(format(path))
of.write(" " + str(os.path.getsize(path)) + "\n")
for file in files:
fstat=os.stat(os.path.join(path,file))
size = os.stat(path).st_size
total_size = total_size + size
#writes output to file
of.write("\n" + "Directory: " + input_file + "\n")
of.write("The total size of the directory is: " + str(total_size))
Und auch ein Screenshot der Ausgabedatei, wenn diese auf dem /var
Verzeichnis ausgeführt wird:
Sie tun so ziemlich was 'du' tut? Vielleicht einfach 'du' benutzen? –
Sie drucken nur Verzeichnisgrößen. Die Größe eines Verzeichnisses berücksichtigt den Inhalt nicht. – user1620443
Haben Sie auch bemerkt, dass Sie nur die Ergebnisse der letzten Iteration addieren? – user1620443