FS (Dateisystem) Modul

Dieses Modul stellt Funktionen zur Untersuchung des Dateisystems bereit. Es ist ab Version 0.53.0 verfügbar.

Seit 0.59.0 akzeptieren alle Funktionen files() Objekte, wenn sie etwas Nützliches damit tun können (dies schließt exists, is_dir, is_file, is_absolute aus, da ein files() Objekt immer der absolute Pfad zu einer vorhandenen Datei ist).

Verwendung

Das Modul kann wie folgt importiert werden

fs = import('fs')

Dateisuche-Regeln

Nicht-absolute Pfade werden relativ zum Verzeichnis gesucht, in dem sich die aktuelle meson.build Datei befindet.

Falls angegeben, wird ein führendes ~ zum Home-Verzeichnis des Benutzers erweitert. Umgebungsvariablen sind nicht verfügbar, wie es die Regel im gesamten Meson ist. Das heißt, $HOME, %USERPROFILE%, $MKLROOT usw. haben keine Bedeutung für das Meson Dateisystem-Modul. Falls erforderlich, übergeben Sie solche Variablen über Kommandozeilenoptionen in meson.options, Native-Datei oder Cross-Datei an Meson.

Wo immer möglich, werden Symlinks und übergeordnete Verzeichnisse zur Notation zu einem absoluten Pfad aufgelöst.

exists

Nimmt ein einzelnes String-Argument und gibt true zurück, wenn eine Entität mit diesem Namen im Dateisystem existiert. Dies kann eine Datei, ein Verzeichnis oder ein spezieller Eintrag wie ein Geräteknoten sein.

is_dir

Nimmt ein einzelnes String-Argument und gibt true zurück, wenn ein Verzeichnis mit diesem Namen im Dateisystem existiert.

is_file

Nimmt ein einzelnes String-Argument und gibt true zurück, wenn eine Datei mit diesem Namen im Dateisystem existiert.

Nimmt ein einzelnes String- oder (seit 0.59.0) files() Argument und gibt true zurück, wenn der Pfad, auf den der String zeigt, ein symbolischer Link ist.

Dateiparameter

is_absolute

seit 0.54.0

Gibt einen booleschen Wert zurück, der angibt, ob der angegebene Pfad-String oder (seit 0.59.0) files() absolut ist, OHNE ~ zu erweitern.

Beispiele

fs.is_absolute('~')   # false

home = fs.expanduser('~')
fs.is_absolute(home)  # true

fs.is_absolute(home / 'foo')  # true, even if ~/foo doesn't exist

fs.is_absolute('foo/bar')  # false, even if ./foo/bar exists

hash

Die Methode fs.hash(filename, hash_algorithm) gibt einen String mit dem hexadezimalen hash_algorithm Digest einer Datei zurück. hash_algorithm ist ein String; die verfügbaren Hash-Algorithmen umfassen: md5, sha1, sha224, sha256, sha384, sha512.

size

Die Methode fs.size(filename) gibt die Größe der Datei in ganzen Bytes zurück.

is_samepath

fs.is_samepath(path1, path2) gibt den booleschen Wert true zurück, wenn beide Pfade zum selben Pfad aufgelöst werden. Zum Beispiel, nehmen wir an, path1 ist ein Symlink und path2 ist ein relativer Pfad. Wenn path1 zu path2 aufgelöst werden kann, wird true zurückgegeben. Wenn path1 nicht zu path2 aufgelöst wird, wird false zurückgegeben. Wenn path1 oder path2 nicht existieren, wird false zurückgegeben.

Beispiele

x = 'foo.txt'
y = 'sub/../foo.txt'
z = 'bar.txt'  # a symlink pointing to foo.txt
j = 'notafile.txt'  # nonexistent file

fs.is_samepath(x, y)  # true
fs.is_samepath(x, z)  # true
fs.is_samepath(x, j)  # false

p = 'foo/bar'
q = 'foo/bar/baz/..'
r = 'buz'  # a symlink pointing to foo/bar
s = 'notapath'  # nonexistent directory

fs.is_samepath(p, q)  # true
fs.is_samepath(p, r)  # true
fs.is_samepath(p, s)  # false

Dateinamenänderung

Die Dateien müssen noch nicht unbedingt existieren für diese Pfad-String-Manipulationsmethoden.

expanduser

seit 0.54.0

Ein Pfad-String mit einem führenden ~ wird zum Home-Verzeichnis des Benutzers erweitert.

Beispiele

fs.expanduser('~')  # user home directory

fs.expanduser('~/foo')  # <homedir>/foo

as_posix

seit 0.54.0

fs.as_posix(path) nimmt einen Windows-Pfad an, auch wenn er auf einem Unix-ähnlichen System ausgeführt wird. Daher werden alle '\' oder '\\' zu '/', auch wenn Sie ein Zeichen maskieren wollten.

Beispiele

fs.as_posix('\\') == '/'  # true
fs.as_posix('\\\\') == '/'  # true

fs.as_posix('foo\\bar/baz') == 'foo/bar/baz'  # true

replace_suffix

Die Methode replace_suffix ist eine *String-Manipulations*methode zur praktischen Dateinamenänderung. Sie ermöglicht das Ändern der Dateinamen-Endung wie

Suffix tauschen

original = '/opt/foo.ini'
new = fs.replace_suffix(original, '.txt')  # /opt/foo.txt

Suffix hinzufügen

original = '/opt/foo'
new = fs.replace_suffix(original, '.txt')  # /opt/foo.txt

Suffix-Kombination tauschen

original = '/opt/foo.dll.a'
new = fs.replace_suffix(original, '.so')  # /opt/foo.dll.so

Suffix löschen

original = '/opt/foo.dll.a'
new = fs.replace_suffix(original, '')  # /opt/foo.dll

parent

Gibt das übergeordnete Verzeichnis zurück (d.h. dirname).

new = fs.parent('foo/bar')  # foo
new = fs.parent('foo/bar/baz.dll')  # foo/bar

name

Gibt die letzte Komponente des Pfades zurück (d.h. basename).

fs.name('foo/bar/baz.dll.a')  # baz.dll.a

stem

seit 0.54.0

Gibt die letzte Komponente des Pfades zurück, wobei der letzte Teil der Endung weggelassen wird.

fs.stem('foo/bar/baz.dll')  # baz
fs.stem('foo/bar/baz.dll.a')  # baz.dll

read

  • read(path, encoding: 'utf-8') *(seit 0.57.0)*: gibt einen String mit dem Inhalt des angegebenen path zurück. Wenn das Schlüsselwortargument encoding nicht angegeben ist, wird angenommen, dass die Datei, die von path angegeben wird, UTF-8-kodiert ist. Binärdateien werden nicht unterstützt. Die angegebenen Pfade sollten relativ zu meson.current_source_dir() sein oder ein absoluter Pfad außerhalb des Build-Verzeichnisses ist akzeptiert. Wenn die von path angegebene Datei geändert wird, löst dies Meson aus, das Projekt neu zu konfigurieren. Wenn die von path angegebene Datei ein files() Objekt ist, kann sie sich nicht auf eine erstellte Datei beziehen.

relative_to

Seit 1.3.0

Gibt einen relativen Dateipfad zurück. Falls ein relativer Pfad nicht gefunden werden konnte, wird der absolute Pfad von to zurückgegeben. Relative Pfad-Argumente werden als relativ zu meson.current_source_dir() angenommen.

Hat die folgenden positionsbezogenen Argumente

  • to str | file | custom_tgt | custom_idx | build_tgt: Endpfad
  • from str | file | custom_tgt | custom_idx | build_tgt: Startpfad

gibt zurück

  • einen String

copyfile

Seit 0.64.0

Kopiert eine Datei vom Quellverzeichnis in das Build-Verzeichnis während des Build-Vorgangs.

Hat die folgenden positionsbezogenen Argumente

  • src File | str: die zu kopierende Datei

Hat die folgenden optionalen Argumente

  • dest str: der Name der Ausgabedatei. Wenn nicht gesetzt, ist es der Basename des src-Arguments.

Hat die folgenden Schlüsselwortargumente

  • install bool: Ob die kopierte Datei installiert werden soll, Standard ist false
  • install_dir str: Wohin die Datei installiert werden soll
  • install_tag: str: Der Installations-Tag, der diesem Ziel zugewiesen werden soll
  • install_mode array[str | int]: Der Modus, mit dem die Datei installiert werden soll

gibt zurück

copy = fs.copyfile('input-file', 'output-file')

Die Ergebnisse der Suche sind