Python API
FileSystem
- class RPA.FileSystem.FileSystem
The FileSystem library can be used to interact with files and directories on the local computer. It can inspect and list files, remove and create them, read contents from files, and write data out.
It shadows the built-in OperatingSystem library but contains keywords which are more RPA-oriented.
Examples
Robot Framework
The library allows, for instance, iterating over files and inspecting them.
*** Settings *** Library RPA.FileSystem *** Keywords *** Delete large files ${files}= List files in directory archive/orders/ FOR ${file} IN @{FILES} Run keyword if ${file.size} > 10**8 Remove file ${file} END Read process output Start external program Wait until modified process.log ${output}= Read file process.log [Return] ${output}
Python
The library can also be used inside Python.
from RPA.FileSystem import FileSystem def move_to_archive(): lib = FileSystem() matches = lib.find_files("**/*.xlsx") if matches: lib.create_directory("archive") lib.move_files(matches, "archive")
- PATH_TYPE
alias of
Union
[str
,Path
]
- ROBOT_LIBRARY_DOC_FORMAT = 'REST'
- ROBOT_LIBRARY_SCOPE = 'GLOBAL'
- absolute_path(path: Union[str, Path]) str
Returns the absolute path to a file, and resolves symlinks.
- Parameters
path – path that will be resolved
- Returns
absolute path to file as a string
- append_to_binary_file(path: Union[str, Path], content: Any) None
Appends binary content to the given file.
See
Create Binary File
for usage example.- Parameters
path – path to file to append to
content – content to append
- append_to_file(path: Union[str, Path], content: str, encoding: str = 'utf-8') None
Appends text to the given file.
See
Create File
for usage example.- Parameters
path – path to file to append to
content – content to append
encoding – character encoding of appended content
- change_file_extension(path: Union[str, Path], extension: str) None
Replaces file extension for file at given path. the file extension can be removed by passing an empty string.
- Parameters
path – path to file to rename
extension – new extension, e.g. .xlsx
Example:
*** Tasks *** Change a file extension Change file extension ... devdata/work-items-in/default/orders.xls ... .xlsx
- copy_directory(source: Union[str, Path], destination: Union[str, Path]) None
Copy directory from source path to destination path.
- Parameters
source – path to source directory
destination – path to copy destination
Example:
*** Tasks *** Copy a directory Copy directory output temp
- copy_file(source: Union[str, Path], destination: Union[str, Path]) None
Copy a file from source path to destination path.
See
Is Directory Empty
for usage example.- Parameters
source – path to source file
destination – path to copy destination
- copy_files(sources: List[Union[str, Path]], destination: Union[str, Path]) None
Copy multiple files to destination folder.
- Parameters
sources – list of source files
destination – path to destination folder
Example:
*** Tasks *** Copy some files ${files}= Find files devdata/*.json Copy files ${files} output
- create_binary_file(path: Union[str, Path], content: Optional[Any] = None, overwrite: bool = False) None
Creates a new binary file, and writes content if any is given.
- Parameters
path – path to file to write
content – content to write to file (optional)
overwrite – replace destination file if it already exists
Example:
*** Tasks *** Create a new file ${content}= Get ... url=https://file-examples.com/storage/fe88505b6162b2538a045ce/2017/10/file_example_JPG_100kB.jpg Create binary file output/sample.jpg content=${content.content} overwrite=${True}
- create_directory(path: Union[str, Path], parents: bool = False, exist_ok: bool = True) None
Creates a directory and (optionally) non-existing parent directories.
- Parameters
path – path to new directory
parents – create missing parent directories (defaults to
False
)exist_ok – continue without errors if directory already exists (defaults to
True
)
Example:
*** Tasks *** Create new path Create directory output/my/new/path parents=${True}
- create_file(path: Union[str, Path], content: Optional[str] = None, encoding: str = 'utf-8', overwrite: bool = False) None
Creates a new text file, and writes content if any is given.
- Parameters
path – path to file to write
content – content to write to file (optional)
encoding – character encoding of written content (default
utf-8
)overwrite – replace destination file if it already exists (default
False
)
Example:
*** Tasks *** Create a new file ${content}= Get url=https://www.example.com Create file output/newfile.html content=${content.text} ... overwrite=${True}
- does_directory_exist(path: Union[str, Path]) bool
Returns True if the given directory exists, False if not.
See
Does Directory Not Exist
for usage example.- Parameters
path – path to inspected directory
- Returns
true or false if the directory exists
- does_directory_not_exist(path: Union[str, Path]) bool
Returns True if the directory does not exist, False if it does.
- Parameters
path – path to inspected directory
- Returns
true or false if the directory does not exists
Example:
*** Tasks *** Check for directory ${directory_exists}= Does directory not exist output IF ${directory_exists} Create directory output
- does_file_exist(path: Union[str, Path]) bool
Returns True if the given file exists, False if not.
- Parameters
path – path to inspected file
- Returns
true or false if file exists
Example:
*** Tasks *** Check for file ${log_exists}= Does file exist output/log.html IF ${log_exists} ${file}= Find files output/log.html Open user browser ${file}[0] END
- does_file_not_exist(path: Union[str, Path]) bool
Returns True if the file does not exist, False if it does.
See
Does File Exist
for usage example.- Parameters
path – path to inspected file
- Returns
true or false if the files does not exist
- empty_directory(path: Union[str, Path]) None
Removes all the files in the given directory.
- Parameters
path – directory to remove files from
Example:
*** Tasks *** Empty out directory Empty directory output
- find_files(pattern: Union[str, Path], include_dirs: bool = True, include_files: bool = True) list
Find files recursively according to a pattern.
- Parameters
pattern – search path in glob format pattern, e.g. .xls or */orders.txt
include_dirs – include directories in results (defaults to True)
include_files – include files in results (defaults to True)
- Returns
list of paths that match the pattern
Example:
*** Tasks *** Finding files recursively ${files}= Find files **/*.log FOR ${file} IN @{files} Read file ${file} END
- get_file_creation_date(path: Union[str, Path]) float
Returns the creation time in seconds. Note: Linux sets this whenever file metadata changes
- Parameters
path – path to file to inspect
- Returns
creation time in seconds as a float
- get_file_extension(path: Union[str, Path]) str
Returns the suffix for the file.
- Parameters
path – path to file
- Returns
file suffix as a string
- get_file_modified_date(path: Union[str, Path]) float
Returns the modified time in seconds.
- Parameters
path – path to file to inspect
- Returns
modified time in seconds as a float
- get_file_name(path: Union[str, Path]) str
Returns only the full file name portion of a path.
- Parameters
path – path to file
- Returns
filename portion of a path as a string
- get_file_owner(path: Union[str, Path]) str
Return the name of the user who owns the file.
- Parameters
path – path to file to inspect
- Returns
file owner as a string
- get_file_size(path: Union[str, Path]) int
Returns the file size in bytes.
- Parameters
path – path to file to inspect
- Returns
file size in bytes as an int
- get_file_stem(path: Union[str, Path]) str
Returns the name of the file without its extension.
- Parameters
path – path to file
- Returns
filename without its suffix as a string
- is_directory_empty(path: Optional[Union[str, Path]] = None) bool
Returns True if the given directory has no files or subdirectories.
- Parameters
path – path to inspected directory
- Returns
true or false if the directory is empty
Example:
*** Tasks *** Check for empty directory ${directory_empty}= Is directory empty output IF ${directory_empty} Copy file ${source} output/new_file.txt END
- is_directory_not_empty(path: Optional[Union[str, Path]] = None) bool
Returns True if the given directory has any files or subdirectories.
See
Is Directory Empty
for usage example.- Parameters
path – path to inspected directory
- Returns
true or false if the directory is not empty
- is_file_empty(path: Union[str, Path]) bool
Returns True if the given file has no content, i.e. has zero size.
- Parameters
path – path to inspected file
- Returns
true or false if the file is empty
- is_file_not_empty(path: Union[str, Path]) bool
Returns True if the given file has content, i.e. larger than zero size.
- Parameters
path – path to inspected file
- Returns
true or false if the file is not empty
Example:
*** Tasks *** Check for empty file ${file_empty}= Is file not empty output/log.html IF ${file_empty} Copy file output/log.html ${alt_dir} END
- join_path(*parts: Union[str, Path]) str
Joins multiple parts of a path together.
- Parameters
parts – Components of the path, e.g. dir, subdir, filename.ext
- Returns
complete file path as a single string
Example:
*** Tasks *** Join path together Join path output/nested folder
- list_directories_in_directory(path: Optional[Union[str, Path]] = None) list
Lists all the directories in the given directory, relative to it.
- Parameters
path – base directory for search, defaults to current working dir
- Returns
list of directories in selected directory
Example:
*** Tasks *** List directories ${directories}= List directories in directory devdata FOR ${path} IN @{directories} Log ${path} END
- list_files_in_directory(path: Optional[Union[str, Path]] = None) list
Lists all the files in the given directory, relative to it.
- Parameters
path – base directory for search, defaults to current working directory
- Returns
list of files in directory
Example:
*** Tasks *** List directory file ${files}= List files in directory output FOR ${file} IN @{files} Log ${file} END
- log_directory_tree(path: Optional[Union[str, Path]] = None) None
Logs all the files in the directory recursively.
- Parameters
path – base directory to start from, defaults to current working dir
Example:
*** Tasks *** List directory tree Log directory tree
- move_directory(source: Union[str, Path], destination: Union[str, Path], overwrite: bool = False) None
Move a directory from source path to destination path.
- Parameters
source – source directory path for moving
destination – path to move to
overwrite – replace destination directory if it already exists (defaults to
False
)
Example:
*** Tasks *** Move a directory Move directory output temp
- move_file(source: Union[str, Path], destination: Union[str, Path], overwrite: bool = False) None
Move a file from source path to destination path, optionally overwriting the destination.
- Parameters
source – source file path for moving
destination – path to move to
overwrite – replace destination file if it already exists (defaults to
False
)
Example:
*** Tasks *** Move a file Create directory temp Move file output/log.html temp/log.html
- move_files(sources: List[Union[str, Path]], destination: Union[str, Path], overwrite: bool = False) None
Move multiple files to the destination folder.
- Parameters
sources – list of files to move
destination – path to move destination
overwrite – replace destination files if they already exist
Example:
*** Tasks *** Move some files Create directory temp Move files output/log.html output/output.xml temp
- normalize_path(path: Union[str, Path]) str
Removes redundant separators or up-level references from path.
- Parameters
path – path that will be normalized
- Returns
path to file as a string
Example:
*** Tasks *** Get normal path # Normalized path becomes ../inputs/input.xlsx ${normalized_path}= Normalize path ..//inputs/./new/../input.xlsx Create work items ${normalized_path}
- read_binary_file(path: Union[str, Path]) bytes
Reads a file in binary mode and returns the content. Does not attempt to decode the content in any way.
- Parameters
path – path to file to read
- Returns
the file content as bytes
Example:
*** Tasks *** Read picture as binary ${pictures}= Find files **/*.png FOR ${picture} IN @{pictures} Read binary file ${picture} END
- read_file(path: Union[str, Path], encoding: str = 'utf-8') str
Reads a file as text, with given encoding, and returns the content.”
See
Find Files
for usage example.- Parameters
path – path to file to read
encoding – character encoding of file (default
utf-8
)
- Returns
file content as string
- remove_directory(path: Union[str, Path], recursive: bool = False) None
Removes the given directory, and optionally everything it contains.
- Parameters
path – path to directory
recursive – remove all subdirectories and files (default to
False
)
Example:
*** Tasks *** Delete a directory Remove directory output recursive=${True}
- remove_file(path: Union[str, Path], missing_ok: bool = True) None
Removes the given file.
- Parameters
path – path to the file to remove
missing_ok – ignore non-existent file (defaults to
True
)
Example:
*** Tasks *** Delete a file Remove file output/log.html
- remove_files(*paths: Union[str, Path], missing_ok: bool = True) None
Removes multiple files.
- Parameters
paths – paths to files to be removed
missing_ok – ignore non-existent files (default to
True
)
Example:
*** Tasks *** Delete some files Remove files output/log.html output/output.xml
- run_keyword_if_file_exists(path: Union[str, Path], keyword: str, *args) None
If file exists at path, execute given keyword with arguments.
- Parameters
path – path to file to inspect
keyword – Robot Framework keyword to execute
args – arguments to keyword
Example:
*** Tasks *** Execute if orders exists Run keyword if file exists orders.xlsx Process orders
- touch_file(path: Union[str, Path]) None
Creates a file with no content, or if file already exists, updates the modification and access times.
- Parameters
path – path to file which is touched
- wait_until_created(path: Union[str, Path], timeout: Union[int, float] = 5.0) str
Poll path until it exists, or raise exception if timeout is reached.
- Parameters
path – path to poll
timeout – time in seconds until keyword fails
- Returns
path to the created file as a string
Example:
*** Tasks *** Wait for existence Wait until created orders.xlsx 10 Process orders orders.xlsx
- wait_until_modified(path: Union[str, Path], timeout: Union[int, float] = 5.0) str
Poll path until it has been modified after the keyword was called, or raise exception if timeout is reached.
- Parameters
path – path to poll
timeout – time in seconds until keyword fails
- Returns
path to the modified file as a string
Example:
*** Tasks *** Wait for change Wait until modified orders.xlsx 10 Process orders orders.xlsx
- wait_until_removed(path: Union[str, Path], timeout: Union[int, float] = 5.0) None
Poll path until it doesn’t exist, or raise exception if timeout is reached.
- Parameters
path – path to poll
timeout – time in seconds until keyword fails