Paths and files¶
Remember, always import library.
import easymacro as app
Get info path¶
path = '/home/mau/myfile.ods'
p = app.paths(path)
app.debug(p.path)
app.debug(p.file_name)
app.debug(p.name)
app.debug(p.ext)
app.debug(p.size)
app.debug(p.url)
Or get information in a tuple
path = '/home/mau/myfile.ods'
p = app.paths(path)
app.msgbox(p.info)
Exists path¶
path = '/home/mau/test'
app.msgbox(app.paths.exists(path))
Path is file¶
path = '/home/mau/myfile.ott'
app.msgbox(app.paths.is_file(path))
Path is dir¶
path = '/home/mau'
app.msgbox(app.paths.is_dir(path))
Get path home¶
path = app.paths.home
app.msgbox(path)
Get path documents¶
Configurate in LibreOffice Paths
path = app.paths.documents
app.msgbox(path)
Get path temp¶
path = app.paths.temp_dir
app.msgbox(path)
Get path from LibreOffice configuration¶
Default get path documents.
path = app.paths.config()
app.msgbox(path)
All options in API XPathSettings
path = app.paths.config('Config')
app.msgbox(path)
Get path executable python¶
path_python = app.paths.python
app.msgbox(path_python)
Save and read text data¶
Default encoding is UTF8
data = """Do you want to know who you are? Don't ask. Act!
Action will delineate and define you.
Thomas Jefferson
"""
path = '/home/mau/temp.txt'
app.paths.save(path, data)
data = app.paths.read(path)
app.msgbox(data)
Change encoding
app.paths.save(path, data, 'iso-8859-1')
Save and read binary data¶
data = b'Binary data'
path = '/home/mau/temp.bin'
app.paths.save_bin(path, data)
data = app.paths.read_bin(path)
app.msgbox(data)
Join paths¶
path_home = app.paths.home
file_name = 'test.ods'
path = app.paths.join(path_home, file_name)
app.msgbox(path)
Get a temporal path¶
path_temp = app.paths.tmp()
app.msgbox(path_temp)
Get with extension.
path_temp = app.paths.tmp('.txt')
app.msgbox(path_temp)
Save data in a temporal path
data = """He who receives an idea from me,
receives instruction himself without lessening mine;
as he who lights his taper at mine,
receives light without darkening me.
Thomas Jefferson
"""
path_tmp = app.paths.save_tmp(data)
app.msgbox(path_tmp)
Get a temporal dir¶
All content and directory is deleted when exit context.
data = """Do you want to know who you are? Don't ask. Act!
Action will delineate and define you.
Thomas Jefferson
"""
with app.paths.dir_tmp() as dt:
app.debug(app.paths.exists(dt))
path = app.paths.join(dt, 'test.txt')
app.paths.save(path, data)
app.debug(app.paths.exists(dt))
Get path for save¶
Default open in user documents.
path = app.paths.get()
app.msgbox(path)
Open in other path.
path_tmp = app.paths.temp_dir
path = app.paths.get(path_tmp)
app.msgbox(path)
Add one filter
path = app.paths.get(filters='xml')
app.msgbox(path)
Add multiple filters
path = app.paths.get(filters='xml,txt')
Select directory¶
Default open in user documents.
path_dir = app.paths.get_dir()
app.msgbox(path_dir)
Open in other path.
path_tmp = app.paths.temp_dir
path_dir = app.paths.get_dir(path_tmp)
app.msgbox(path_dir)
Get path exists file¶
Default open in user documents.
path_file = app.paths.get_file()
app.msgbox(path_file)
Change init dir.
path = '/home/mau'
path_file = app.paths.get_file(path)
app.msgbox(path_file)
Add filter or filters.
path_file = app.paths.get_file(filters='ods')
# or
path_file = app.paths.get_file(filters='ods,odt')
Can select multiple files.
path_file = app.paths.get_file(multiple=True)
Replace extension¶
path = '/home/mau/myFile.ods'
path_new = app.paths.replace_ext(path, 'pdf')
app.msgbox(path_new)
Path in format URL <-> System¶
path = '/home/mau/myFile.ods'
path_url = app.paths.to_url(path)
app.msgbox(path_url)
path = app.paths.to_system(path_url)
app.msgbox(path)
Delete files and directories¶
CAUTION: Delete files and directories immediately, always confirm this action.
path = '/home/mau/temp.bin'
result = app.paths.kill(path)
app.msgbox(result)
Delete directory and all content.
path = '/home/mau/safe_for_delete'
result = app.paths.kill(path)
app.msgbox(result)
Get files¶
This method use library pathlib
Get files not recursively
path = '/home/mau/Documents'
files = app.paths.files(path)
for f in files:
app.debug(f)
Add filter
files = app.paths.files(path, '*.pdf')
Get from this directory and all subdirectories, recursively
files = app.paths.files(path, '**/*.pdf')
This method use os.walk
Get content files recursively
path = '/home/mau/Documents'
files = app.paths.walk(path)
for f in files:
app.debug(f)
Add filters
files = app.paths.walk(path, 'ods')
# or filters
files = app.paths.walk(path, 'ods|odt')
Get directories¶
This method use library pathlib
Get directories in path not recursively
path = '/home/mau/Documents'
folders = app.paths.dirs(path)
for f in folders:
app.debug(f)
This method use os.walk
Get directories in path recursively
path = '/home/mau/Documents'
folders = app.paths.walk_dirs(path)
for f in folders:
app.debug(f)
Get info in a tuple (ID_FOLDER, ID_PARENT, NAME)
path = '/home/mau/Documents'
folders = app.paths.walk_dirs(path, True)
for f in folders:
app.debug(f)
Get install path from id extension¶
id_ext = 'net.elmau.zaz.EasyMacro'
path = app.paths.from_id(id_ext)
app.debug(path)
24/06/2021 21:47:29 - DEBUG - /home/mau/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu20665x29msz.tmp_/ZAZEasyMacro_v0.1.0.oxt