11 KiB
Trabajar con rutas y archivos.
path
Obtener información de una ruta.
ruta_archivo = '/home/elmau/mi_archivo.ods'
p = app.paths(ruta_archivo)
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)
15/08/2022 14:40:08 - DEBUG - /home/elmau
15/08/2022 14:40:08 - DEBUG - mi_archivo.ods
15/08/2022 14:40:08 - DEBUG - mi_archivo
15/08/2022 14:40:08 - DEBUG - ods
15/08/2022 14:40:08 - DEBUG - 7011
15/08/2022 14:40:08 - DEBUG - file:///home/elmau/mi_archivo.ods
Obtener la misma información como un tupla.
ruta_archivo = '/home/elmau/mi_archivo.ods'
p = app.paths(ruta_archivo)
app.debug(p.info)
15/08/2022 14:43:01 - DEBUG - ('/home/elmau', 'mi_archivo.ods', 'mi_archivo', 'ods', 7011, 'file:///home/mau/mi_archivo.ods')
O como diccionario.
ruta_archivo = '/home/elmau/mi_archivo.ods'
p = app.paths(ruta_archivo)
app.debug(p.dict)
15/08/2022 14:43:01 - DEBUG - {'path': '/home/elmau', 'file_name': 'mi_archivo.ods', 'name': 'mi_archivo', 'ext': 'ods', 'size': 7011, 'url': 'file:///home/mau/mi_archivo.ods'}
home
Obtener la carpeta de inicio del usuario.
p = app.paths
app.debug(p.home)
documents
Obtener la carpeta Documentos del usuario.
p = app.paths
app.debug(p.documents)
user_profile
Obtener la ruta del perfil de usuario.
p = app.paths
app.debug(p.user_profile)
user_config
Obtener la ruta de la carpeta config
en el perfil de usuario.
p = app.paths
app.debug(p.user_config)
python
Obtener la ruta del ejecutable python
p = app.paths
app.debug(p.python)
to_system
Pasar una ruta en formato URL al formato del sistema de archivos del SO.
p = app.paths
ruta_url = 'file:///home/elmau/mi_archivo.ods'
ruta = p.to_system(ruta_url)
app.debug(ruta)
to_url
Pasar una ruta del sistema de archivos del SO al formato URL.
p = app.paths
ruta = '/home/mau/mi_archivo.ods'
ruta_url = p.to_url(ruta)
app.debug(ruta_url)
config
Obtener rutas de la configuración de LibreOffice. Por default obtiene la ruta de Documentos
, para otras ruta mire Api XPathSettings
p = app.paths
ruta = p.config()
app.debug(ruta)
ruta = p.config('UserConfig')
app.debug(ruta)
!!! tip "Atención"
Algunas rutas pueden ser más de una, separados por `;`, en este caso, el resultado es una lista con las rutas.
join
Concatenar rutas.
p = app.paths
ruta = p.join('/home/mau', 'pruebas', 'archivo.ods')
app.debug(ruta)
exists
Verificar si una ruta existe.
p = app.paths
resultado = p.exists('/home/mau/test/archivo.ods')
app.debug(resultado)
exists_app
Verificar si una aplicación existe.
p = app.paths
resultado = p.exists_app('noexiste')
app.debug(resultado)
resultado = p.exists_app('soffice')
app.debug(resultado)
is_dir
Verificar si la ruta es un directorio.
p = app.paths
resultado = p.is_dir('/home/elmau')
app.debug(resultado)
is_file
Verificar si la ruta es un archivo.
p = app.paths
resultado = p.is_file('/home/elmau/mi_archivo.ods')
app.debug(resultado)
temp_file
Crear un archivo temporal, es borrado automáticamente al cerrarse.
p = app.paths
f = p.temp_file()
f.write(app.INFO_DEBUG)
f.close()
Usado en contexto
, se cierra automáticamente.
with p.temp_file() as f:
app.debug(f.name)
f.write('test')
temp_dir
Crear un directorio temporal, al salir del contexto, es eliminado junto con todo su contenido del sistema de archivos.
p = app.paths
with p.temp_dir() as d:
app.debug(p.exists(d))
app.debug(d)
app.debug(p.exists(d))
get
Permitir al usuario seleccionar archivos, devuelve solo la ruta. De forma predeterminada abre en la carpeta Documentos
.
p = app.paths
ruta = p.get()
app.debug(ruta)
Establecer que abra en otro directorio.
ruta = p.get('/tmp')
app.debug(ruta)
Agregar un filtro.
ruta = p.get(filters='ods')
app.debug(ruta)
Agregar multiples filtros.
ruta = p.get(filters='xml,txt')
app.debug(ruta)
Permitir selecciones multiples.
rutas = p.get(filters='xml,txt', multiple=True)
app.debug(rutas)
get_dir
Permitir al usuario seleccionar un directorio, devuelve solo la ruta. De forma predeterminada abre en la carpeta Documentos
.
p = app.paths
ruta = p.get_dir()
app.debug(ruta)
Establecer que abra en otro directorio.
ruta = p.get_dir('/tmp')
app.debug(ruta)
get_for_save
Permitir seleccionar un directorio y capturar el nombre del archivo, devuelve la ruta completa.
p = app.paths
ruta = p.get_for_save()
app.debug(ruta)
Establecer que inicie en otro directorio.
ruta = p.get_for_save('/tmp')
app.debug(ruta)
Si se establece un filtro, automáticamente se agrega la extensión.
ruta = p.get_for_save(filters='txt')
app.debug(ruta)
!!! tip "Atención"
Si el archivo capturado existe, el usuario verá una advertencia de sobreescritura.
files
Obtener archivos de una ruta, no recursivamente. De forma predeterminada regresa todos, incluyendo archivos ocultos.
ruta = '/home/elmau'
p = app.paths
archivos = p.files(ruta)
for a in archivos:
app.debug(a)
Filtrar por tipo de archivo.
p = app.paths
archivos = p.files(ruta, '*.pdf')
Obtener archivos de forma recursiva.
p = app.paths
archivos = p.files(ruta, '**/*.xml')
!!! warning "Cuidado:"
Dependiendo de la cantidad de archivo en la ruta origen, este proceso puede ser costoso en tiempo.
walk
Obtener archivos de forma recursiva.
p = app.paths
ruta = '/home/elmau/Documents'
archivos = p.walk(ruta)
for a in archivos:
app.debug(a)
Con filtro.
archivos = p.walk(ruta, 'ods')
Varios filtros.
archivos = p.walk(ruta, 'ods|odt')
dirs
Obtener los directorios de una ruta, no recursivamente.
p = app.paths
ruta = '/home/elmau/Documents'
folders = p.dirs(ruta)
for f in folders:
app.debug(f)
walk_dirs
Obtener los directorios de una ruta, recursivamente.
p = app.paths
ruta = '/home/elmau/Documents'
folders = p.walk_dirs(ruta)
for f in folders:
app.debug(f)
Obtener información en una lista de tuplas: (ID_FOLDER
, ID_PADRE
, NOMBRE
)
folders = p.walk_dirs(ruta, True)
extension
Obtener la ruta de instalación de una extensión a partir de su ID.
p = app.paths
id_ext = 'net.elmau.zaz.talk'
ruta = p.extension(id_ext)
app.debug(ruta)
replace_ext
Reemplazar extensión de un archivo. El reemplazo es solo en la variable, no en el archivo físico.
p = app.paths
ruta = '/home/elmau/mi_archivo.ods'
ruta_nueva = p.replace_ext(ruta, 'pdf')
app.debug(ruta_nueva)
open
Abrir cualquier archivo con el programa predeterminado del SO.
p = app.paths
ruta = '/home/elmau/archivo.pdf'
p.open(ruta)
ruta = '/home/elmau/index.html'
p.open(ruta)
save y read
Guardar y leer datos, el encoding predeterminado es UTF8.
p = app.paths
datos = """¿Quieres saber quién eres? No preguntes. Actúa.
La acción te delineará y definirá.
Thomas Jefferson
"""
ruta = '/home/elmau/temp.txt'
p.save(ruta, datos)
datos = p.read(ruta)
app.msgbox(datos)
Cambiar el encoding.
app.paths.save(ruta, datos, 'iso-8859-1')
save_bin y read_bin
Guardar y leer datos binarios.
p = app.paths
datos = b'Datos binarios'
ruta = '/home/elmau/temp.bin'
p.save_bin(ruta, datos)
datos = p.read_bin(ruta)
app.msgbox(datos)
save_json y read_json
Guardar y leer en formato json.
p = app.paths
ruta = '/home/elmau/datos.json'
datos = {
'tipo': 'calc',
'nombre': 'miarchivo.ods',
}
p.save_json(ruta, datos)
datos = p.read_json(ruta)
app.msgbox(datos)
save_csv y read_csv
Exportar e importar datos en formato CSV. Vea la documentación CSV para los argumentos que puede usar.
p = app.paths
ruta = '/home/elmau/datos.csv'
ahora = app.dates.now
datos = (
(1, 'uno', ahora),
(2, 'dos', ahora),
(3, 'tres', ahora),
)
p.save_csv(ruta, datos)
datos = p.read_csv(ruta)
app.msgbox(datos)
kill
Borra archivos o directorios con todo su contenido. Devuelve verdadero (True) en caso de exito y falso (Falso) en cualquier otro caso.
!!! warning inline end "Cuidado"
Este proceso es destructivo, es buena practica siempre solicitar confirmación al usuario.
p = app.paths
ruta = '/home/elmau/temp.bin'
resultado = p.kill(ruta)
app.msgbox(resultado)
copy
Copiar archivos. Devuelve la ruta completa final destino.
De un archivo origen a una carpeta destino con el mismo nombre.
p = app.paths
ruta_origen = '/home/elmau/temp.txt'
ruta_destino = '/home/elmau/Desktop'
ruta = p.copy(ruta_origen, ruta_destino)
app.debug(ruta)
Cambiando el nombre destino.
ruta_origen = '/home/elmau/temp.txt'
ruta_destino = '/home/elmau/Desktop'
nuevo_nombre = 'datos.csv'
ruta = p.copy(ruta_origen, ruta_destino, nuevo_nombre)
app.debug(ruta)
zip
Comprimir un archivo en el mismo directorio, lo comprime y le asigna el mismo nombre con extensión zip
.
p = app.paths
origen = '/home/elmau/temp.txt'
destino = p.zip(origen)
app.debug(destino)
Comprimir varios archivos estableciendo ruta y nombre destino.
archivos = (
'/home/elmau/temp.txt',
'/home/elmau/ids',
'/home/elmau/ids.ods')
destino = p.zip(archivos, '/home/elmau/destino.zip')
app.debug(destino)
Comprimir un directorio.
directorio = '/home/elmau/pruebas'
destino = p.zip(directorio, '/home/elmau/pruebas.zip')
app.debug(destino)
zip_content
Devuelve una lista con los nombres de los archivos contenidos en el archivo zip
.
archivo = '/home/elmau/temp.zip'
contenido = p.zip_content(archivo)
app.debug(contenido)
unzip
Descomprime un archivo zip
en el mismo directorio.
p = app.paths
archivo = '/home/elmau/temp.zip'
p.unzip(archivo)
Descomprime un archivo zip
en otro directorio.
archivo = '/home/elmau/temp.zip'
destino = '/home/elmau/Desktop'
p.unzip(archivo, destino)