Dienst ScriptForge.FileSystem

Der Dienst FileSystem enthält Routinen zur Handhabung von Dateien und Ordnern. Als erstes sind einige Beispiele für die Funktionen dieses Dienstes aufgeführt:

note

Die Methoden im Dienst FileSystem basieren hauptsächlich auf der UNO-Schnittstelle XSimpleFileAccess.


Definitionen

Die folgende Tabelle listet die Hauptparameter auf, die von den meisten Methoden im Dienst FileSystem verwendet werden.

Parameter

Beschreibung

FileName

Der vollständige Name der Datei einschließlich des Pfads ohne Pfadtrennzeichen am Ende.

FolderName

Der vollständige Name des Ordners einschließlich des Pfads. Er kann das abschließende Pfadtrennzeichen enthalten oder nicht.

Name

Der letzte Bestandteil des Ordnernamens oder Dateinamens einschließlich seiner Erweiterung. Dieser Parameter wird immer im nativen Format des Betriebssystems ausgedrückt.

BaseName

Die letzte Bestandteil des Ordnernamens oder Dateinamens ohne seine Erweiterung.

NamePattern

Einer der oben genannten Namen, der in seiner letzten Komponente Platzhalter enthält. Zugelassene Platzhalter sind:

  • "?" steht für ein beliebiges einzelnes Zeichen

  • "*" steht für kein, ein oder mehrere Zeichen


tip

Der Dienst FileSystem ermöglicht es, Operationen für mehrere Dateien gleichzeitig auszuführen. Durch die Verwendung von Namensmustern können Benutzerskripte mehrere Dateien kopieren, verschieben oder löschen. Umgekehrt können integrierte Basic-Methoden nur einzelne Dateien verarbeiten.


Notation für Dateinamen

Die zum Ausdrücken von Datei- und Ordnernamen verwendete Notation, sowohl für Argumente als auch für zurückgegebene Werte, wird durch die Eigenschaft FileNaming des Dienstes FileSystem festgelegt.

Kurz gesagt sind die möglichen Darstellungstypen „URL“ (URL-Dateischreibweise), „SYS“ (Betriebssystem-Schreibweise) und „ANY“ (Standard). Weitere Informationen finden Sie unten.

tip

Ein Beispiel für die URL-Notation ist file:///C:/Documents/my_file.odt. Erwägen Sie nach Möglichkeit die Verwendung der URL-Notation, da dies eine übertragbare Alternative ist.


warning

Die Verwendung der Abkürzung „~“ (Tilde), die in Linux-basierten Betriebssystemen üblich ist, wird nicht unterstützt, um einen Pfad zu einem Ordner und Dateinamen auszudrücken. Verwenden Sie anstelle von "~/Dokumente/MeineDatei.odt" den vollständigen Pfad "/home/user/Dokumente/MeineDatei.odt".


Dienstaufruf

Der folgende Code-Schnipsel ruft den Dienst FileSystem auf. Als Beispiel wurde die Methode BuildPath verwendet.

In Basic

      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      Dim FSO As Object
      Set FSO = CreateScriptService("FileSystem")
      FSO.BuildPath(...)
    
In Python

      from scriptforge import CreateScriptService
      fs = CreateScriptService("FileSystem")
      fs.BuildPath(...)
    

Accessing the Virtual File System of a Document

LibreOffice document files are compressed ZIP files that contain the files and folders that represent the actual document contents. While the document is open, it is possible to access this virtual file system, explore its structure, as well as read and create files and folders.

The following example shows how to create a text file named myFile.txt and store it inside the document's virtual file system.

In Basic

    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    Dim oDoc As Object, fso As Object, oFile As Object
    Dim sRoot, sFile, sMyDir
    Set fso = CreateScriptService("FileSystem")
    Set oDoc = CreateScriptService("Document", ThisComponent)
    ' Gets the URL path notation to the root of the virtual file system
    sRoot = oDoc.FileSystem()
    sMyDir = sRoot & "myDir"
    ' Creates the folder "myDir" if it does not exist
    If Not fso.FolderExists(sMyDir) Then
        fso.CreateFolder(sMyDir)
    End If
    ' Creates the file and write some text into it
    sFile = fso.BuildPath(sMyDir, "myFile.txt")
    oFile = fso.CreateTextFile(sFile)
    oFile.WriteLine("Hello!")
    oFile.CloseFile()
  
In Python

    from scriptforge import CreateScriptService
    bas = CreateScriptService("Basic")
    doc = CreateScriptService("Document", bas.ThisComponent)
    fso = CreateScriptService("FileSystem")
    sRoot = doc.FileSystem
    sMyDir = sRoot + "myDir"
    if not fso.FolderExists(sMyDir):
        fso.CreateFolder(sMyDir)
    sFile = fso.BuildPath(sMyDir, "myFile.txt")
    oFile = fso.CreateTextFile(sFile)
    oFile.WriteLine("Hello!")
    oFile.CloseFile()
  

In general, all methods of the FileSystem service can be used to manipulate files in the document's virtual file system. However, the following restrictions apply:

note

The path to the virtual file system is not a physical address on the computer's hard drive. It can only be accessed from within a LibreOffice script and it only exists while the document file is open.


Eigenschaften

Name

Schreibgeschützt

Typ

Beschreibung

FileNaming

Nein

String

Legt die aktuelle Datei- und Ordnernotation fest oder gibt sie zurück, entweder "ANY", "URL" oder "SYS":

  • "ANY": (Standard) Die Methoden des Dienstes FileSystem akzeptieren sowohl die URL-Notation als auch die Notation des aktuellen Betriebssystems für Eingabeargumente, geben aber immer URL-Zeichenfolgen zurück.

  • "URL": Die Methoden des Dienstes FileSystem erwarten die URL-Notation für Eingabeargumente und geben URL-Zeichenfolgen zurück.

  • "SYS": Die Methoden des Dienstes FileSystem erwarten die Notation des aktuellen Betriebssystems für Eingabeargumente und geben diese auch zurück.

Einmal gesetzt, bleibt die Eigenschaft FileNaming unverändert, entweder bis zum Ende der LibreOffice-Sitzung oder bis sie erneut gesetzt wird.

ConfigFolder

Ja

String

Gibt den Konfigurationsordner von LibreOffice zurück.

ExtensionsFolder

Ja

String

Gibt den Ordner zurück, in dem Erweiterungen installiert sind.

HomeFolder

Ja

String

Gibt den Home-Ordner des Benutzers zurück.

InstallFolder

Ja

String

Gibt den Installationsordner von LibreOffice zurück.

TemplatesFolder

Ja

String

Gibt den Ordner zurück, der die System-Dateivorlagen enthält.

TemporaryFolder

Ja

String

Gibt den Ordner für temporäre Dateien zurück, der in den LibreOffice-Pfadeinstellungen definiert ist.

UserTemplatesFolder

Ja

String

Gibt den Ordner zurück, der die benutzerdefinierten Dokumentvorlagen-Dateien enthält.


Liste der Methoden im Dienst FileSystem

BuildPath
CompareFiles
CopyFile
CopyFolder
CreateFolder
CreateTextFile
DeleteFile
DeleteFolder
ExtensionFolder

FileExists
Files
FolderExists
GetBaseName
GetExtension
GetFileLen
GetFileModified
GetName
GetParentFolderName

GetTempName
HashFile
MoveFile
MoveFolder
Normalize
OpenTextFile
PickFile
PickFolder
SubFolders


BuildPath

Verbindet einen Ordnerpfad und den Namen einer Datei und gibt den vollständigen Dateinamen mit einem gültigen Pfadtrennzeichen zurück. Das Pfadtrennzeichen wird nur bei Bedarf hinzugefügt.

Syntax:

svc.BuildPath(foldername: str, name: str): str

Parameter:

foldername: Der Pfad, mit dem name kombiniert wird. Der angegebene Pfad muss kein vorhandener Ordner sein.

name: Der Name der Datei, die an foldername angehängt werden soll. Dieser Parameter verwendet die Notation des aktuellen Betriebssystems.

Beispiel:

In Basic

      Dim FSO as Object
      Set FSO = CreateScriptService("FileSystem")
      Dim aFileName as String
      FSO.FileNaming = "URL"
      aFileName = FSO.BuildPath("file:///home/user", "sample file.odt")
      ' file:///home/user/sample%20file.odt
    
In Python

      fs = CreateScriptService("FileSystem")
      fs.FileNaming = "URL"
      aFileName = fs.BuildPath("file:///home/user", "sample file.odt")
      # file:///home/user/sample%20file.odt
    

CompareFiles

Vergleicht zwei Dateien und gibt True zurück, wenn sie identisch zu sein scheinen.

Abhängig vom Wert des Arguments comparecontents kann der Vergleich zwischen beiden Dateien entweder nur auf Dateiattributen (wie dem letzten Änderungsdatum) oder auf dem Dateiinhalt basieren.

Syntax:

svc.CompareFiles(filename1: str, filename2: str, comparecontents: bool = False): bool

Parameter:

filename1, filename2: Die zu vergleichenden Dateien.

comparecontents: Bei True werden die Inhalte der Dateien verglichen (Standard = False).

Beispiel:

In Basic

      FSO.FileNaming = "SYS"
      If FSO.CompareFiles("C:\myFile1.txt", "C:\myFile2.txt", CompareContents := False) Then
          ' ...
      End If
    
In Python

      fs.FileNaming = "SYS"
      if fs.CompareFiles(r"C:\myFile1.txt", r"C:\myFile2.txt", comparecontents = False):
          # ...
    

CopyFile

Kopiert eine oder mehrere Dateien von einem Speicherort an einen anderen. Gibt True zurück, wenn mindestens eine Datei kopiert wurde, oder False, wenn ein Fehler aufgetreten ist.

Ein Fehler tritt auch auf, wenn der Parameter source Platzhalter verwendet und mit keiner Datei übereinstimmt.

Die Methode stoppt sofort, nachdem sie auf einen Fehler gestoßen ist. Die Methode führt kein Rollback durch und macht auch keine Änderungen rückgängig, die vor dem Auftreten des Fehlers vorgenommen wurden.

Syntax:

svc.CopyFile(source: str, destination: str, overwrite: bool = True): bool

Parameter:

source: Kann ein FileName oder ein NamePattern sein, der eine oder mehrere zu kopierende Dateien angibt.

destination: Kann entweder ein FileName sein, der festlegt, wohin die einzelne source kopiert werden soll, oder ein FolderName, in den mehrere Dateien aus source kopiert werden sollen.

overwrite: Wenn True (Standard), dürfen Dateien überschrieben werden. Die Methode schlägt fehl, wenn destination schreibgeschützt ist, unabhängig von dem in overwrite angegebenen Wert.

Beispiel:

In den folgenden Beispielen kopiert die erste Zeile eine einzelne Datei, während die zweite Zeile mehrere Dateien mit Platzhaltern kopiert.

In Basic

      FSO.CopyFile("C:\Documents\my_file.odt", "C:\Temp\copied_file.odt")
      FSO.CopyFile("C:\Documents\*.*", "C:\Temp\", Overwrite := False)
    
In Python

      fs.CopyFile(r"C:\Documents\my_file.odt", r"C:\Temp\copied_file.odt")
      fs.CopyFile(r"C:\Documents\*.*", r"C:\Temp", overwrite = False)
    
note

Beachten Sie, dass Unterordner und ihre Inhalte nicht kopiert werden, wenn Platzhalter im Argument source verwendet werden.


CopyFolder

Kopiert einen oder mehrere Ordner von einem Speicherort an einen anderen. Gibt True zurück, wenn mindestens ein Ordner kopiert wurde, oder False, wenn ein Fehler aufgetreten ist.

Ein Fehler tritt auch auf, wenn der Parameter source Platzhalter verwendet und mit keinem Ordner übereinstimmt.

Die Methode stoppt sofort, nachdem sie auf einen Fehler gestoßen ist. Die Methode führt kein Rollback durch und macht auch keine Änderungen rückgängig, die vor dem Auftreten des Fehlers vorgenommen wurden.

Syntax:

svc.CopyFolder(source: str, destination: str, overwrite: bool = True): bool

Parameter:

source: Kann ein FolderName oder ein NamePattern sein, der einen oder mehrere zu kopierende Ordner angibt.

destination: Legt FolderName fest, wohin die in source definierten einzelnen oder mehreren Ordner kopiert werden sollen.

overwrite: Wenn True (Standard), dürfen Dateien überschrieben werden. Die Methode schlägt fehl, wenn destination schreibgeschützt ist, unabhängig von dem in overwrite angegebenen Wert.

Beispiel:

In den Beispielen unten werden alle Dateien, Ordner und Unterordner kopiert.


      ' Basic
      FSO.CopyFolder("C:\Documents\*", "C:\Temp\", Overwrite := False)
    

      # Python
      fs.CopyFolder(r"C:\Documents\*", r"C:\Temp", overwrite = False)
    

CreateFolder

Erstellt den angegebenen FolderName. Gibt True zurück, wenn der Ordner erfolgreich erstellt werden konnte.

Wenn der angegebene Ordner einen nicht vorhandenen übergeordneten Ordner hat, wird er erstellt.

Syntax:

svc.CreateFolder(foldername: str): bool

Parameter:

foldername: Eine Zeichenfolge, die den zu erstellenden Ordner darstellt. Wenn der Ordner bereits vorhanden ist, wird eine Ausnahme ausgelöst.

Beispiel:


      ' Basic
      FSO.CreateFolder("C:\NewFolder")
    

      # Python
      fs.CreateFolder(r"C:\NewFolder")
    

CreateTextFile

Erstellt eine angegebene Datei und gibt eine Dienstinstanz TextStream zurück, die zum Schreiben in die Datei verwendet werden kann.

Die Methode gibt ein Objekt Null zurück, wenn ein Fehler aufgetreten ist.

Syntax:

svc.CreateTextFile(filename: str, overwrite: bool = True, encoding: str = 'UTF-8'): svc

Parameter:

filename: Der Name der zu erstellenden Datei.

overwrite: Boolescher Wert, der bestimmt, ob filename überschrieben werden kann (Standard = True).

encoding: Der zu verwendende Zeichensatz. Die Standardcodierung ist "UTF-8".

Beispiel:

In Basic

      Dim myFile As Object
      FSO.FileNaming = "SYS"
      Set myFile = FSO.CreateTextFile("C:\Temp\ThisFile.txt", Overwrite := True)
    
In Python

      fs.FileNaming = "SYS"
      myFile = fs.CreateTextFile(r"C:\Temp\ThisFile.txt", overwrite = True)
    
note

Um mehr über die Namen von Zeichensätzen zu erfahren, besuchen Sie die Seite IANA's Character Set. Beachten Sie, dass LibreOffice nicht alle vorhandenen Zeichensätze implementiert.


DeleteFile

Löscht eine oder mehrere Dateien. Gibt True zurück, wenn mindestens eine Datei gelöscht wurde, oder False, wenn ein Fehler aufgetreten ist.

Ein Fehler tritt auch auf, wenn der Parameter filename Platzhalter verwendet und mit keiner Datei übereinstimmt.

Die zu löschenden Dateien dürfen nicht schreibgeschützt sein.

Die Methode stoppt sofort, nachdem sie auf einen Fehler gestoßen ist. Die Methode führt kein Rollback durch und macht auch keine Änderungen rückgängig, die vor dem Auftreten des Fehlers vorgenommen wurden.

Syntax:

svc.DeleteFile(filename: str): bool

Parameter:

filename: Kann ein FileName oder ein NamePattern sein, das eine oder mehrere zu löschende Dateien angibt.

Beispiel:

In den folgenden Beispielen werden nur Dateien gelöscht, Unterordner werden nicht gelöscht.


      ' Basic
      FSO.DeleteFile("C:\Temp\*.docx")
    

      # Python
      fs.DeleteFile(r"C:\Temp\*.docx")
    

DeleteFolder

Löscht einen oder mehrere Ordner. Gibt True zurück, wenn mindestens ein Ordner gelöscht wurde, oder False, wenn ein Fehler aufgetreten ist.

Ein Fehler tritt auch auf, wenn der Parameter foldername Platzhalter verwendet und mit keinem Ordner übereinstimmt.

Die zu löschenden Ordner dürfen nicht schreibgeschützt sein.

Die Methode stoppt sofort, nachdem sie auf einen Fehler gestoßen ist. Die Methode führt kein Rollback durch und macht auch keine Änderungen rückgängig, die vor dem Auftreten des Fehlers vorgenommen wurden.

Syntax:

svc.DeleteFolder(foldername: str): bool

Parameter:

foldername: Kann ein FolderName oder ein NamePattern sein, das einen oder mehrere zu löschende Ordner angibt.

Beispiel:

In den folgenden Beispielen werden nur Ordner und deren Inhalt gelöscht. Dateien im übergeordneten Ordner "C:\Temp" werden nicht gelöscht.


      ' Basic
      FSO.DeleteFolder("C:\Temp\*")
    

      # Python
      fs.DeleteFolder(r"C:\Temp\*")
    

ExtensionFolder

Gibt eine Zeichenfolge zurück, die den Ordner enthält, in dem das angegebene Erweiterungspaket installiert ist.

note

Der aktuelle Wert der Eigenschaft SF_FileSystem.FileNaming wird verwendet, um die Notation der zurückgegebenen Zeichenfolge zu bestimmen.


tip

Verwenden Sie die Eigenschaft Extensions aus dem Dienst Platform, um eine Zeichenfolgenmatrix mit den IDs aller installierten Erweiterungen zu erhalten.


Syntax:

svc.ExtensionFolder(extension: str): str

Parameter:

extension: Eine Zeichenfolge mit der ID der Erweiterung. Wenn die Erweiterung nicht installiert ist, wird eine Ausnahme ausgelöst.

Beispiel:

Die folgenden Beispiele in Basic und Python geben den Ordner zurück, in dem die APSO-Erweiterung installiert ist.


      ' Basic
      sFolder = FSO.ExtensionFolder("apso.python.script.organizer")
      ' file:///home/username/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu10833wz3u2i.tmp_/apso_1_2_7.oxt
    

      # Python
      sFolder = fs.ExtensionFolder("apso.python.script.organizer")
    

FileExists

Gibt True zurück, wenn ein gegebener Dateiname gültig ist und existiert, andernfalls gibt die Methode False zurück.

Wenn der Parameter filename tatsächlich ein vorhandener Ordnername ist, gibt die Methode False zurück.

Syntax:

svc.FileExists(filename: str): bool

Parameter:

filename: Eine Zeichenfolge, welche die zu testende Datei darstellt.

Beispiel:

In Basic

      FSO.FileNaming = "SYS"
      If FSO.FileExists("C:\Documents\my_file.odt") Then
          '...
      End If
    
In Python

      fs.FileNaming = "SYS"
      if fs.FileExists(r"C:\Documents\my_file.odt"):
          # ...
    

Files

Gibt eine nullbasierte Matrix der Dateien zurück, die in einem bestimmten Ordner gespeichert sind. Jeder Eintrag in der Matrix ist eine Zeichenfolge, die den vollständigen Pfad und Dateinamen enthält.

Wenn das Argument foldername einen Ordner festlegt, der nicht existiert, wird eine Ausnahme ausgelöst.

Die resultierende Liste kann mit Platzhaltern gefiltert werden.

Syntax:

svc.Files(foldername: str, filter: str = '', includesubfolders: bool = False): str[0..*]

Parameter:

foldername: Eine Zeichenfolge, die einen Ordner darstellt. Der Ordner muss vorhanden sein. Dieses Argument darf keine Datei bezeichnen.

filter: Eine Zeichenfolge mit Platzhaltern ("?" und "*"), die auf die resultierende Dateiliste angewendet wird (Standard = "").

includesubfolders: Set this argument to True to include the contents of subfolders (Default = False).

Beispiel:

In Basic

      Dim filesList As Variant, file As String
      FSO.FileNaming = "SYS"
      ' Returns all files matching the "*.txt" filter, including files in subfolders
      filesList = FSO.Files("/home/user/", "*.txt", IncludeSubfolders := True)
      For Each file In filesList
          ' ...
      Next file
    
In Python

      fs.FileNaming = "SYS"
      filesList = fs.Files("/home/user/", "*.txt", includesubfolders = True)
      for file in fileList:
          # ...
    

FolderExists

Gibt True zurück, wenn der angegebene FolderName gültig und vorhanden ist, ansonsten gibt die Methode False zurück.

Wenn der Parameter foldername tatsächlich ein vorhandener Dateiname ist, gibt die Methode False zurück.

Syntax:

svc.FolderExists(foldername: str): bool

Parameter:

foldername: Eine Zeichenfolge, die den zu testenden Ordner darstellt.

Beispiel:

In Basic

      FSO.FileNaming = "SYS"
      If FSO.FolderExists("C:\Documents\Thesis") Then
          '...
      End If
    
In Python

      fs.FileNaming = "SYS"
      if fs.FolderExists(r"C:\Documents\Thesis")
          # ...
    

GetBaseName

Gibt den BaseName (gleich der letzten Komponente) eines Ordner- oder Dateinamens ohne seine Erweiterung zurück.

Die Methode überprüft nicht, ob die angegebene Datei oder der angegebene Ordner vorhanden ist.

Syntax:

svc.GetBaseName(filename: str): str

Parameter:

filename: Eine Zeichenfolge, die den Dateinamen und seinen Pfad darstellt.

Beispiel:

In den folgenden Beispielen entspricht der erste Methodenaufruf von GetBaseName einem Ordner, sodass die Funktion die letzte Komponente des Pfads zurückgibt. Der zweite Aufruf erhält einen Dateinamen als Eingabe, sodass der Name der Datei ohne Erweiterung zurückgegeben wird.

In Basic

      MsgBox FSO.GetBaseName("/home/user/Documents") ' "Documents"
      MsgBox FSO.GetBaseName("/home/user/Documents/my_file.ods") ' "my_file"
    
In Python

      bas = CreateScriptService("Basic")
      bas.MsgBox(fs.GetBaseName("/home/user/Documents")) # "Documents"
      bas.MsgBox(fs.GetBaseName("/home/user/Documents/my_file.ods")) # "my_file"
    

GetExtension

Gibt die Erweiterung eines Datei- oder Ordnernamens ohne den Punkt "." wieder.

Die Methode prüft nicht, ob die angegebene Datei oder der angegebene Ordner vorhanden sind.

Wenn diese Methode auf einen Ordnernamen oder eine Datei ohne Erweiterung angewendet wird, wird eine leere Zeichenfolge zurückgegeben.

Syntax:

svc.GetExtension(filename: str): str

Parameter:

filename: Eine Zeichenfolge, die den Dateinamen und seinen Pfad darstellt.

Beispiel:


      ' Basic
      ext = FSO.GetExtension("C:\Windows\Notepad.exe")  ' "exe"
    

      # Python
      ext = fs.GetExtension(r"C:\Windows\Notepad.exe")  # "exe"
    

GetFileLen

Die eingebaute Basic-Funktion FileLen gibt die Anzahl der in einer Datei enthaltenen Bytes als Wert vom Typ Long zurück, also bis zu 2 GB.

Die Methode GetFileLen kann Dateien mit viel größeren Größen verarbeiten, indem sie einen Wert vom Typ Currency zurückgibt.

Syntax:

svc.GetFileLen(filename: str): num

Parameter:

filename: Eine Zeichenfolge, die eine vorhandene Datei darstellt.

Beispiel:

In Basic

      Dim fLen As Currency
      FSO.FileNaming = "SYS"
      fLen = FSO.GetFileLen("C:\pagefile.sys")
    
In Python

      fs.FileNaming = "SYS"
      fLen = fs.GetFileLen(r"C:\pagefile.sys")
    

GetFileModified

Gibt das Datum der letzten Änderung einer bestimmten Datei zurück.

Syntax:

svc.GetFileModified(filename: str): datetime

Parameter:

filename: Eine Zeichenfolge, die eine vorhandene Datei darstellt.

Beispiel:

In Basic

      Dim aDate As Date
      FSO.FileNaming = "SYS"
      aDate = FSO.GetFileModified("C:\Documents\my_file.odt")
    
In Python

      fs.FileNaming = "SYS"
      aDate = FSO.GetFileModified(r"C:\Documents\my_file.odt")
    

GetName

Gibt die letzte Komponente eines Datei- oder Ordnernamens im nativen Betriebssystemformat zurück.

Die Methode überprüft nicht, ob die angegebene Datei oder der angegebene Ordner vorhanden ist.

Syntax:

svc.GetName(filename: str): str

Parameter:

filename: Eine Zeichenfolge, die den Dateinamen und seinen Pfad darstellt.

Beispiel:


      ' Basic
      a = FSO.GetName("C:\Windows\Notepad.exe")  ' Notepad.exe
    

      # Python
      a = fs.GetName(r"C:\Windows\Notepad.exe")  # Notepad.exe
    

GetParentFolderName

Gibt eine Zeichenfolge zurück, die den Namen des übergeordneten Ordners einer angegebenen Datei oder eines Ordnernamens enthält.

Die Methode überprüft nicht, ob die angegebene Datei oder der angegebene Ordner vorhanden ist.

Syntax:

svc.GetParentFolderName(filename: str): str

Parameter:

filename: Eine Zeichenfolge mit dem Datei- oder Ordnernamen, der analysiert werden soll.

Beispiel:


      ' Basic
      a = FSO.GetParentFolderName("C:\Windows\Notepad.exe")  ' C:\Windows\
    

      # Python
      a = fs.GetParentFolderName(r"C:\Windows\Notepad.exe")  # C:\Windows\
    

GetTempName

Gibt einen zufällig generierten temporären Dateinamen zurück, der zum Ausführen von Vorgängen nützlich ist, die eine temporäre Datei erfordern.

By default, the returned file name does not have an extension. Use the extension parameter to specify the extension of the file name to be generated.

The folder part of the returned string is the system's temporary folder.

Die Methode erstellt keine temporäre Datei.

Syntax:

svc.GetTempName(extension: str): str

Parameter:

extension: The extension of the temporary file name (Default = "").

Beispiel:

In Basic

      Dim fName As String
      FSO.FileNaming = "SYS"
      fName = FSO.GetTempName(Extension := "txt")
      ' "/tmp/SF_574068.txt"
    
In Python

      fs.FileNaming = "SYS"
      fName = FSO.GetTempName(extension = "txt")
      # "/tmp/SF_574068.txt"
    

HashFile

Hash-Funktionen werden von einigen kryptografischen Algorithmen in digitalen Signaturen, Nachrichtenauthentifizierungscodes, Betrugserkennung, Fingerabdrücken, Prüfsummen (Nachrichtenintegritätsprüfung), Hash-Tabellen, Kennwortspeicherung und vielem mehr verwendet.

Die Methode HashFile gibt das Ergebnis einer Hash-Funktion zurück, die auf eine bestimmte Datei angewendet wird und einen bestimmten Algorithmus verwendet. Der zurückgegebene Wert ist eine Zeichenfolge aus Hexadezimalziffern in Kleinbuchstaben.

Die unterstützten Hash-Algorithmen sind: MD5, SHA1, SHA224, SHA256, SHA384 und SHA512.

Syntax:

svc.HashFile(filename: str, algorithm: str): str

Parameter:

Dateiname: Eine Zeichenfolge, die eine vorhandene Datei darstellt.

Algorithm: Einer der unterstützten Algorithmen.

Beispiel:


      ' Basic
      sHash = FSO.HashFile("C:\pagefile.sys", "MD5")
    

      # Python
      sHash = FSO.HashFile(r"C:\pagefile.sys", "MD5")
    

MoveFile

Verschiebt eine oder mehrere Dateien von einem Speicherort an einen anderen. Gibt True zurück, wenn mindestens eine Datei verschoben wurde, oder False, wenn ein Fehler aufgetreten ist.

Ein Fehler tritt auch auf, wenn der Parameter source Platzhalter verwendet und mit keiner Datei übereinstimmt.

Die Methode stoppt sofort, nachdem sie auf einen Fehler gestoßen ist. Die Methode führt kein Rollback durch und macht auch keine Änderungen rückgängig, die vor dem Auftreten des Fehlers vorgenommen wurden.

Syntax:

svc.MoveFile(source: str, destination: str): bool

Parameter:

source: Kann ein FileName oder NamePattern sein, um eine oder mehrere zu verschiebende Dateien anzugeben.

destination: Wenn source ein FileName ist, dann gibt dieser Parameter den neuen Pfad und Dateinamen der verschobenen Datei an.

Wenn der Verschiebevorgang mehrere Dateien umfasst, muss destination ein Ordnername sein. Wenn es nicht existiert, wird es erstellt.

Wenn source und destination denselben übergeordneten Ordner haben, benennt die Methode die source um.

Platzhalter sind in destination nicht zulässig.

Beispiel:

In den folgenden Beispielen werden nur Dateien verschoben, Unterordner nicht.


      ' Basic
      FSO.MoveFile("C:\Temp1\*.*", "C:\Temp2")
    

      # Python
      fs.MoveFile(r"C:\Temp1\*.*", r"C:\Temp2")
    

MoveFolder

Verschiebt einen oder mehrere Ordner von einem Ort an einen anderen. Gibt True zurück, wenn mindestens ein Ordner verschoben wurde, oder False, wenn ein Fehler aufgetreten ist.

Ein Fehler tritt auch auf, wenn der Parameter source Platzhalter verwendet und mit keinem Ordner übereinstimmt.

Die Methode stoppt sofort, nachdem sie auf einen Fehler gestoßen ist. Die Methode führt kein Rollback durch und macht auch keine Änderungen rückgängig, die vor dem Auftreten des Fehlers vorgenommen wurden.

Syntax:

svc.MoveFolder(source: str, destination: str): bool

Parameter:

source: Kann ein FolderName oder ein NamePattern sein, um einen oder mehrere zu verschiebende Ordner anzugeben.

destination: Wenn der Verschiebevorgang einen einzelnen Ordner betrifft, dann ist destination der Name und Pfad des verschobenen Ordners und darf nicht existieren.

Wenn mehrere Ordner verschoben werden, gibt destination an, wohin die Ordner in source verschoben werden. Wenn destination nicht existiert, wird es erstellt.

Platzhalter sind in destination nicht zulässig.

Beispiel:


      ' Basic
      FSO.MoveFolder("C:\Temp1\*", "C:\Temp2")
    

      # Python
      fs.MoveFolder(r"C:\Temp1\*", r"C:\Temp2")
    

Normalize

Gibt eine Zeichenfolge zurück, die den normalisierten Pfadnamen enthält, indem redundante Trennzeichen und Verweise auf höherer Ebene reduziert werden.

Zum Beispiel die Pfadnamen A//B, A/B/, A/./B und A/foo/ ../B werden alle auf A/B normalisiert.

Unter Windows werden Schrägstriche „/“ in Rückstriche „\“ umgewandelt.

note

Der aktuelle Wert der Eigenschaft SF_FileSystem.FileNaming wird verwendet, um die Schreibweise des Arguments filename sowie das Format der zurückgegebenen Zeichenfolge zu bestimmen.


Syntax:

svc.Normalize(filename: str): str

Parameter:

filename: eine Zeichenfolge, die einen gültigen Pfadnamen darstellt. Die durch dieses Argument dargestellte Datei oder das Verzeichnis existiert möglicherweise nicht.

Beispiel:

In Basic

    FSO.FileNaming = "URL"
    ' file:///home/user/Documents
    normPath = FSO.Normalize("file:///home/user/Documents/")
    ' file:///home/user/Documents
    normPath = FSO.Normalize("file:///home//user//Documents/")
    ' file:///home/user
    normPath = FSO.Normalize("file:///home//user//Documents/../")
  
In Python

    fs.FileNaming = "URL"
    normPath = fs.Normalize("file:///home/user/Documents/")
    normPath = fs.Normalize("file:///home//user//Documents/")
    normPath = fs.Normalize("file:///home//user//Documents/../")
  

OpenTextFile

Öffnet eine Datei und gibt ein Objekt TextStream zurück, das zum Lesen, Schreiben oder Anhängen an die Datei verwendet werden kann.

Beachten Sie, dass die Methode nicht überprüft, ob die angegebene Datei wirklich eine Textdatei ist.

Die Methode gibt ein Objekt vom Typ Null (in Basic) oder None (in Python) zurück, wenn ein Fehler aufgetreten ist.

Syntax:

svc.OpenTextFile(filename: str, iomode: int = 1, create: bool = False, encoding: str = 'UTF-8'): svc

Parameter:

filename: Identifiziert die zu öffnende Datei.

iomode: Gibt den Ein-/Ausgabemodus an. Es kann eine von drei Konstanten sein: svc.ForReading (Standard), svc.ForWriting oder svc.ForAppending.

create: Boolescher Wert, der angibt, ob eine neue Datei erstellt werden kann, wenn der angegebene filename nicht existiert:

encoding: Der zu verwendende Zeichensatz. Die Standardcodierung ist "UTF-8".

Beispiel:

In Basic

      Dim myFile As Object
      FSO.FileNaming = "SYS"
      Set myFile = FSO.OpenTextFile("C:\Temp\ThisFile.txt", FSO.ForReading)
      If Not IsNull(myFile) Then
          ' ...
      End If
    
In Python

      fs.FileNaming = "SYS"
      myFile = fs.OpenTextFile(r"C:\Temp\ThisFile.txt", fs.ForReading)
      if myFile is not None:
          # ...
    

PickFile

Öffnet einen Dialog zum Öffnen oder Speichern von Dateien.

Wenn der Modus SAVE eingestellt ist und die ausgewählte Datei existiert, wird eine Warnmeldung angezeigt.

Syntax:

svc.PickFile(defaultfile: str ='', mode: str = 'OPEN', filter: str = ''): str

Parameter:

defaultfile: Dieses Argument ist eine Zeichenfolge, die aus einem Ordner- und Dateinamen besteht:

mode: Eine Zeichenfolge, die entweder "OPEN" (für Eingabedateien) oder "SAVE" (für Ausgabedateien) sein kann. Der Standardwert ist "OPEN".

filter: Die Erweiterung der Dateien, die angezeigt werden, wenn der Dialog geöffnet wird (Standard = kein Filter).

Beispiel:

Die folgenden Beispiele öffnen eine Dateiauswahl mit angewendetem Filter "txt".


      ' Basic
      aFile = FSO.PickFile("C:\Documents", "OPEN", "txt")
    

      # Python
      aFile = fs.PickFile(r"C:\Documents", "OPEN", "txt")
    

PickFolder

Öffnet einen Dialog zur Auswahl eines Ordners.

Syntax:

svc.PickFolder(defaultfolder: str = '', freetext: str = ''): str

Parameter:

defaultfolder: Eine Zeichenfolge, welche den Ordnernamen enthält, der angezeigt wird, wenn der Dialog geöffnet wird (Standard = der zuletzt ausgewählte Ordner).

freetext: Text, der im Dialog angezeigt werden soll (Standard = "").

Beispiel:


      ' Basic
      aFolder = FSO.PickFolder("C:\Dokumente", "Wählen Sie einen Ordner oder klicken Sie auf Abbrechen")
    

      # Python
      aFolder = fs.PickFolder(r"C:\Documents", "Wählen Sie einen Ordner oder klicken Sie auf Abbrechen")
    

SubFolders

Gibt eine nullbasierte Matrix von Zeichenfolgen zurück, die den Ordnern entsprechen, die in einem bestimmten Ordnernamen gespeichert sind.

Die Liste kann mit Platzhaltern gefiltert werden.

Syntax:

svc.SubFolders(foldername: str, filter: str = '', includesubfolders: bool = False): str[0..*]

Parameter:

foldername: Eine Zeichenfolge, die einen Ordner darstellt. Der Ordner muss vorhanden sein. foldername darf keine Datei bezeichnen.

filter: Eine Zeichenfolge mit Platzhaltern ("?" und "*"), die auf die resultierende Ordnerliste angewendet wird (Standard = "").

includesubfolders: Set this argument to True to include the contents of subfolders (Default = False).

Beispiel:

In Basic

      Dim folderList As Variant, folder As String
      FSO.FileNaming = "SYS"
      folderList = FSO.SubFolders("/home/user/")
      For Each folder In folderList
          ' ...
      Next folder
    
In Python

      fs.FileNaming = "SYS"
      folderList = fs.SubFolders("/home/user/")
      for folder in folderList:
          # ...
    
warning

Alle ScriptForge Basic-Routinen oder Bezeichner, denen ein Unterstrich "_" vorangestellt ist, sind für den internen Gebrauch reserviert. Sie sind nicht für die Verwendung in Basic-Makros oder Python-Skripten vorgesehen.


Bitte unterstützen Sie uns!