Seite 1 von 1
Relativer Pfad
Verfasst: Dienstag 19. Juni 2018, 20:49
von chposc
Hallo zusammen,
ich hätte eine Frage an euch. Ich bin absoluter Neuling hier und auch in der Programmiersprache Python. Ich habe einmal zum Spaß ein Excel-File eingelesen und die benötigten Daten daraus in eine Datenbank geschrieben. Alles funktioniert, jedoch werde ich immer häufiger gefragt, wenn ich diesen Code übergeben will, warum ich keinen relativen Pfad mache. Kann mir irgendjemand bitte erklären, wofür ich diesen brauche und wie ich diesen bei meinem Beispiel anwenden kann? Für Hilfe wäre ich sehr dankbar.
Code: Alles auswählen
file = r'C:\Users\chposc\Testdaten\TestExcelFile_{:%Y%m%d}*.XLS'
wb = xlrd.open_workbook(max(iglob(file.format(d))))
Re: Relativer Pfad
Verfasst: Dienstag 19. Juni 2018, 21:03
von sls
`file` ist bei dir ein absoluter Pfad. Soll heißen, ein vollständiger Pfad vom Ursprungsverzeichnis deines Datenträgers bis hin zu deiner Python-Datei/Skript/wasauchimmer. Das kann dann problematisch werden, wenn jemand anderes dein Skript verwenden möchte, da bei diesem der absolute Pfad schlicht anders ausschaut da er vielleicht den Pfad "C:\users\detlef\usw.\usf." hat.
Sieh' dich mal im Pathlib oder os.path-Modul um. Dort stehen dir Methoden bereit mit denen du den Pfad zu deinem Skript von Python automatisch zusammenschrauben lassen kannst. Relative Pfade sind z.b. dann nützlich, wenn du in einem Ordner mehrere Python-Skripte hast die `relativ` zu einander in Beziehung stehen:
z.B.:
bla\dein_rogramm_ordner\
- skript1.py
- skript2.py
Möchte nun skript1.py irgendwas mit skript2.py anstellen, aufrufen oder weiß der geier was, musst du von dort aus nicht den absoluten, also vollständigen Pfad angeben, sondern kannst auf die Datei im selben Verzeichnis zeigen: -> .\skript2.py
Oder wenn du ein Verzeichnis höher springen möchtest und auf den Ordner `bla` zugreifen willst: -> ..\..\bla
Mehr infos hier:
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Re: Relativer Pfad
Verfasst: Mittwoch 20. Juni 2018, 07:36
von chposc
Vielen Dank für die Antwort.
Also ich habe jetzt mal einen Pfad erstellt, wenn es Ihn gibt zeigt er an er ließt daraus und wenn nicht legt er ihn an, geht das in die richtige Richtung?
Code: Alles auswählen
DirectoryPath = r'C:\Users\chposc\Desktop\Pythontestdaten'
if not os.path.exists(DirectoryPath):
os.mkdir(DirectoryPath)
print("Neuer Pfad angelegt")
if os.path.exists(DirectoryPath):
print("Ausgewerteter Inhalt des Ordners " + DirectoryPath)
file = r'C:\Users\chposc\Desktop\Pythontestdaten\Exceltestfile_{:%Y%m%d}*.XLS'
Re: Relativer Pfad
Verfasst: Mittwoch 20. Juni 2018, 07:42
von sls
Nicht ganz, denn der Pfad "'C:\Users\chposc\Desktop\Pythontestdaten'" wird bei mir am Rechner bspw. nicht existieren, dein Programm würde ihn aber für mich anlegen, obwohl `ich` nicht `du` bin, und somit auch diesen Heimordner `chposc` nicht gebrauchen kann.
Was du eher möchtest ist vermutlich das hier:
Das meinte ich mit "zusammenschrauben". Python ermittelt eigenständig den absoluten Pfad zu deinem Skript. Probier's mal aus. Dann siehst du was ich meinte. Bei mir bspw. würde dann so etwas kommen wie:
/home/sls/pfad/zum/skript/
(Die Pfadstruktur sieht etwas anders aus als bei dir, da ich ein Linux-System verwende)