Hallo,
Ich habe das Problem, das ich einen Ordner erstellen will der dann von Python gefüllt werden soll.
Das mit dem befüllen habe ich schon geschafft, aber beim Ordner Erstellen hakt es bei mir noch.
Danke
Ordner erstellen
Dafür nimmt man heutzutage das 'pathlib'-Modul:
(Wenn der Ordner immer erstellt werden soll, egal ob er schon existiert oder nicht, kann man auch path.mkdir(exist_ok=True) verwenden.)
Code: Alles auswählen
In [1]: import pathlib
In [2]: path = pathlib.Path('mein_ordner')
In [3]: if not path.exists():
...: path.mkdir()
@nezzcarth: nein, nein, nein, der Ordner wird nicht erstellt wenn er schon existiert, wie soll das auch gehen? Richtig also:
Code: Alles auswählen
from pathlib import Path
path = Path("ordner")
path.mkdir(exist_ok=True)
-
- User
- Beiträge: 491
- Registriert: Mittwoch 13. November 2019, 08:38
Mit pathlib.Path.glob():
Code: Alles auswählen
from pathlib import Path
filepaths = list(Path(r"C:\Test").glob("*.*"))
print(filepaths)
-
- User
- Beiträge: 491
- Registriert: Mittwoch 13. November 2019, 08:38
Interessehalber: Warum ist iterdir() einfacher? Ich verwende gerne glob, da ich mir dann, wie DeaD_EyE sagte, die Möglichkeit zur Rekursion offen halte.
Zudem war glob in einem Mini-Test gerade deutlich schneller:
Zudem war glob in einem Mini-Test gerade deutlich schneller:
Code: Alles auswählen
>>> timeit.timeit(stmt="import pathlib; [x for x in pathlib.Path('C:/dev').iterdir() if x.is_file()]", number=1000)
3.377736500000026
>>> timeit.timeit(stmt="import pathlib; [x for x in pathlib.Path('C:/dev').iterdir() if x.is_file()]", number=1000)
3.33625219999999
>>> timeit.timeit(stmt="import pathlib; [x for x in pathlib.Path('C:/dev').glob('*.*') if x.is_file()]", number=1000)
0.9806270999999924
>>> timeit.timeit(stmt="import pathlib; [x for x in pathlib.Path('C:/dev').glob('*.*') if x.is_file()]", number=1000)
0.9812597000000096
Das lag dann aber an etwas anderem. Die beiden Code-Beispiele, eines davon identisch zu dem von Sirius3, funktionieren beide korrekt; ein Ordner wird erstellt, wenn er noch nicht existiert, ohne dass eine Exception auftritt. Die Anmerkung bezog sich auf Inhaltliches.