Dateipfade#

In Python, es gibt zwei Arten von Dateipfaden: relative Pfade und absolute Pfade.

Absolute Pfade sind Pfade, die von der Wurzel des Dateisystems ausgehen. Zum Beispiel, wenn die Datei “data.txt” in dem Ordner C:\users\meinname gespeichert ist, würde der absolute Pfad zu dieser Datei C:\users\meinname\data.txt lauten.

Relative Pfade sind Pfade, die sich auf einen Pfad beziehen, der von dem aktuellen Verzeichnis des Programms ausgeht. Zum Beispiel, wenn Sie eine Datei namens data.txt in demselben Ordner speichern, in dem Ihr Python-Skript liegt, würde der relative Pfad zu dieser Datei data.txt lauten.

relativer_pfad = './data.txt'
with open(relativer_pfad, "w") as f:
    f.write('Das ist ein Testtext.')

Anzeigen des aktuellen Ordners#

import os
os.getcwd()    # cwd steht für current working directory
'/home/natalie/Dokumente/Datenjournalismus in Python/Code/workbook/grundlagen'
absoluter_pfad = '/home/natalie/Documents/Datenjournalismus in Python/Code/vorlesung/'
filename = 'data.txt'

pfad = absoluter_pfad + filename
with open(pfad, "r") as f:
    test = f.read()
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Cell In[3], line 5
      2 filename = 'data.txt'
      4 pfad = absoluter_pfad + filename
----> 5 with open(pfad, "r") as f:
      6     test = f.read()

File ~/Dokumente/Datenjournalismus in Python/Code/.venv/lib/python3.11/site-packages/IPython/core/interactiveshell.py:310, in _modified_open(file, *args, **kwargs)
    303 if file in {0, 1, 2}:
    304     raise ValueError(
    305         f"IPython won't let you open fd={file} by default "
    306         "as it is likely to crash IPython. If you know what you are doing, "
    307         "you can use builtins' open."
    308     )
--> 310 return io_open(file, *args, **kwargs)

FileNotFoundError: [Errno 2] No such file or directory: '/home/natalie/Documents/Datenjournalismus in Python/Code/vorlesung/data.txt'
test
'Das ist ein Testtext.'

Relative Pfade#

Bei relativen Dateipfaden können wir mit .. eine Ebene höher navigieren.

./ bedeutet im aktuellen Verzeichnis.

# Erstelle einen Ordner eine Ebene höher als das aktuelle Arbeitsverzeichnis
import os
os.mkdir('../../testdata')
help(os.mkdir)
Help on built-in function mkdir in module posix:

mkdir(path, mode=511, *, dir_fd=None)
    Create a directory.
    
    If dir_fd is not None, it should be a file descriptor open to a directory,
      and path should be relative; path will then be relative to that directory.
    dir_fd may not be implemented on your platform.
      If it is unavailable, using it will raise a NotImplementedError.
    
    The mode argument is ignored on Windows.
# Speichere eine Datei in dem neuen Ordner
relativer_pfad = '../testdata/data.txt'
with open(relativer_pfad, "w") as f:
    f.write('Das ist ein Testtext 2.')