Dies ist mein erster Beitrag. Ich habe vor kurzem angefangen, Python zu studieren, und obwohl ich noch halbherziges Wissen habe, möchte ich es als Memorandum veröffentlichen. Ich wäre Ihnen dankbar, wenn Sie sich zu einem Rat frei äußern könnten.
Ich verwende den freigegebenen Ordner einer Abteilung in einer Unternehmensumgebung, aber die Kapazität ist gering und füllt sich schnell. Ich möchte visualisieren, welche Art von Dateien Speicherplatz in diesem Ordner belegen. In der Regel ist die Verwendung von freier Software NG. Nach dem Studium habe ich selbst ein Tool erstellt.
Mit os.walk können Sie problemlos das Innere eines Ordners scannen. (Im Fall von VBA war es notwendig, eine rekursive Verarbeitung durchzuführen, aber es kann leicht mit walk geschrieben werden.)
for curDir, dirs, files in os.walk(target_folder):
Speichern Sie für die oben in target_folder_p beschriebenen Ordner die Dateien in Dateien, die Unterordner in Verzeichnissen und die Ordner, in denen sie jeweils in curDir gespeichert sind.
Danach werden zum Verschachteln in das für Dateien und Verzeichnisse erweitert und die Verarbeitung durchgeführt.
python
import os
target_folder = r"C:\Users\aaa\Desktop\Fotoordner"
for curDir, dirs, files in os.walk(target_folder):
for a_file in files:
print(f"{a_file}Ist ein Ordner:{curDir}Es ist gespeichert in.")
Ergebnis
Mandarine.jpg ist ein Ordner: C.:\Users\aaa\Desktop\Es wird im Fotoordner gespeichert.
Apfel.jpg ist ein Ordner: C.:\Users\aaa\Desktop\Es wird im Fotoordner gespeichert.
Banane.jpg ist ein Ordner: C.:\Users\aaa\Desktop\Es wird im Fotoordner gespeichert.
Hund.jpg ist ein Ordner: C.:\Users\aaa\Desktop\Fotoordner\In Tieren gelagert.
Katze.jpg ist ein Ordner: C.:\Users\aaa\Desktop\Fotoordner\In Tieren gelagert.
Öffnen Sie für die Ausgabe in csv die Datei mit der Funktion open, konvertieren Sie sie mit csv.writer in csv und schreiben Sie sie mit writerow oder writerows.
python
import csv
mit open (Name der Ausgabedatei (vollständiger Pfad),Lesemodus, newline="") as fo:
CSV_file = csv.writer(fo)
CSV_file.writerow(["A1", "B1", "C1", "D1"])
CSV_file.writerow([["A2", "B2", "C2", "D2"],["A3", "B3", "C3", "D3"]])
CSV_file.writerows([["A4", "B4", "C4", "D4"],["A5", "B5", "C5", "D5"]])
Ergebnis: Zeile schreiben schreibt eine Zeile Zeilen schreiben Schreiben Sie mehrere Zeilen gleichzeitig
** Lesemodus (zweites Argument der offenen Funktion) **
Ich studiere immer noch die optionale Newline. Wenn dies jedoch weggelassen wird, werden die Daten bei der Ausgabe um eine Zeile übersprungen.
Dateiliste exportieren.py
import os
import pathlib
import csv
from tkinter import filedialog
#Geben Sie den zu lesenden Ordner an
F_path = os.path.dirname(__file__)
target_folder = filedialog.askdirectory(initialdir=F_path)
target_folder_path = pathlib.Path(target_folder)
filedata = []
#Arbeiten Sie im Ordner
for curDir, dirs, files in os.walk(target_folder_path):
for a_File in files:
file_size = os.path.getsize(os.path.join(curDir, a_File))
file_ext = os.path.splitext(a_File)
filedata.append([len(filedata)+1, a_File,file_ext[1], file_size,os.path.join(curDir, a_File)])
#Leseergebnis anzeigen
print("No.Dateiname Erweiterung Dateigröße (Byte) Vollständiger Pfad")
for i in range(len(filedata)):
print(f"{filedata[i][0]} {filedata[i][1]} {filedata[i][2]} {filedata[i][3]} {filedata[i][4]}")
#Bestätigung des Dateiausgabeziels
print("Die Dateiliste wird in CSV auf der obersten Ebene des Leseordners ausgegeben.\n Geben Sie den Namen der Ausgabedatei ein (keine Erweiterung erforderlich).")
print("(Wenn Sie nicht ausgeben möchten, lassen Sie das Feld leer und drücken Sie die EINGABETASTE.)")
csv_name = input("Name der Ausgabedatei:")
if csv_name == "":
print("Die Datei wurde nicht ausgegeben.")
else:
#Das Leseergebnis in eine Datei ausgeben
output_csv_path = os.path.join(target_folder_path, csv_name + ".csv")
with open(output_csv_path, "w", newline="") as fo:
CSV_file = csv.writer(fo)
CSV_file.writerow(["No.", "Dateiname","Erweiterung", "Dateigröße (Byte)","vollständigen Pfad"])
CSV_file.writerows(filedata)
print(f"Die folgende Datei wurde ausgegeben.=> {output_csv_path}")
Ergebnis
No.Dateiname Erweiterung Dateigröße (Byte) Vollständiger Pfad
1 Pilz-Takeko-Krieg.jpg .jpg 118437 C:\Users\aaa\Desktop\Fotoordner\Pilz Takeko Krieg.jpg
2 Takenoko no Sato.jpg .jpg 93003 C:\Users\aaa\Desktop\Fotoordner\Takenoko no Sato.jpg
3 Katze 1.jpg .jpg 31115 C:\Users\aaa\Desktop\Fotoordner\Tier\Katze 1.jpg
4 Katze 2.jpg .jpg 21160 C:\Users\aaa\Desktop\Fotoordner\Tier\Katze 2.jpg
Die Dateiliste wird in CSV auf der obersten Ebene des Leseordners ausgegeben.
Geben Sie den Namen der Ausgabedatei ein (keine Erweiterung erforderlich).
(Wenn Sie nicht ausgeben möchten, lassen Sie das Feld leer und drücken Sie die EINGABETASTE.)
Name der Ausgabedatei: Ausgabe
Die folgende Datei wurde ausgegeben.=> C:\Users\aaa\Desktop\Fotoordner\output.csv
Recommended Posts