easymacro/doc/content/es/tools/paths/_index.md

570 lines
9.0 KiB
Markdown

+++
title = "Rutas y archivos"
weight = 2
+++
#### Trabajar con rutas y archivos.
### path
Obtener información de una ruta.
```python
ruta_archivo = '/home/mau/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/mau
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/mau/mi_archivo.ods
```
Obtener la misma información como un tupla.
```python
ruta_archivo = '/home/mau/mi_archivo.ods'
p = app.paths(ruta_archivo)
app.debug(p.info)
```
```
15/08/2022 14:43:01 - DEBUG - ('/home/mau', 'mi_archivo.ods', 'mi_archivo', 'ods', 7011, 'file:///home/mau/mi_archivo.ods')
```
O como diccionario.
```python
ruta_archivo = '/home/mau/mi_archivo.ods'
p = app.paths(ruta_archivo)
app.debug(p.dict)
```
```
15/08/2022 14:43:01 - DEBUG - {'path': '/home/mau', '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.
```python
p = app.paths
app.debug(p.home)
```
### documents
Obtener la carpeta Documentos del usuario.
```python
p = app.paths
app.debug(p.documents)
```
### user_profile
Obtener la ruta del perfil de usuario.
```python
p = app.paths
app.debug(p.user_profile)
```
### user_config
Obtener la ruta de la carpeta `config` en el perfil de usuario.
```python
p = app.paths
app.debug(p.user_config)
```
### python
Obtener la ruta del ejecutable `python`
```python
p = app.paths
app.debug(p.python)
```
### to_system
Pasar una ruta en formato URL al formato del sistema de archivos del SO.
```python
p = app.paths
ruta_url = 'file:///home/mau/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.
```python
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][1]
```python
p = app.paths
ruta = p.config()
app.debug(ruta)
ruta = p.config('UserConfig')
app.debug(ruta)
```
{{% notice tip %}}
Algunas rutas pueden ser más de una, separados por `;`, en este caso, el resultado es una lista con las rutas.
{{% /notice %}}
### join
Concatenar rutas.
```python
p = app.paths
ruta = p.join('/home/mau', 'pruebas', 'archivo.ods')
app.debug(ruta)
```
### exists
Verificar si una ruta existe.
```python
p = app.paths
resultado = p.exists('/home/mau/test/archivo.ods')
app.debug(resultado)
```
### exists_app
Verificar si una aplicación existe.
```python
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.
```python
p = app.paths
resultado = p.is_dir('/home/mau')
app.debug(resultado)
```
### is_file
Verificar si la ruta es un archivo.
```python
p = app.paths
resultado = p.is_file('/home/mau/mi_archivo.ods')
app.debug(resultado)
```
### temp_file
Crear un archivo temporal, es borrado automáticamente al cerrarse.
```python
p = app.paths
f = p.temp_file()
f.write(app.INFO_DEBUG)
f.close()
```
Usado en `contexto`, se cierra automáticamente.
```python
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.
```python
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`.
```python
p = app.paths
ruta = p.get()
app.debug(ruta)
```
Establecer que abra en otro directorio.
```python
ruta = p.get('/tmp')
app.debug(ruta)
```
Agregar un filtro.
```python
ruta = p.get(filters='ods')
app.debug(ruta)
```
Agregar multiples filtros.
```python
ruta = p.get(filters='xml,txt')
app.debug(ruta)
```
Permitir selecciones multiples.
```python
ruta = p.get(filters='xml,txt', multiple=True)
app.debug(ruta)
```
### get_dir
Permitir al usuario seleccionar un directorio, devuelve solo la ruta. De forma predeterminada abre en la carpeta `Documentos`.
```python
p = app.paths
ruta = p.get_dir()
app.debug(ruta)
```
Establecer que abra en otro directorio.
```python
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.
```python
p = app.paths
ruta = p.get_for_save()
app.debug(ruta)
```
Establecer que inicie en otro directorio.
```python
ruta = p.get_for_save('/tmp')
app.debug(ruta)
```
Si se establece un filtro, automáticamente se agrega la extensión.
```python
ruta = p.get_for_save(filters='txt')
app.debug(ruta)
```
### files
Obtener archivos de una ruta, no recursivamente. De forma predeterminada regresa todos, incluyendo archivos ocultos.
```python
ruta = '/home/mau'
p = app.paths
archivos = p.files(ruta)
for a in archivos:
app.debug(a)
```
Filtrar por tipo de archivo.
```python
p = app.paths
archivos = p.files(ruta, '*.pdf')
```
Obtener archivos de forma recursiva.
```python
p = app.paths
archivos = p.files(ruta, '**/*.xml')
```
### walk
Obtener archivos de forma recursiva.
```python
p = app.paths
ruta = '/home/mau/Documents'
archivos = p.walk(ruta)
for a in archivos:
app.debug(a)
```
Con filtro.
```python
archivos = p.walk(ruta, 'ods')
```
Con filtros.
```python
archivos = p.walk(ruta, 'ods|odt')
```
### dirs
Obtener los directorios de una ruta, no recursivamente.
```python
p = app.paths
ruta = '/home/mau/Documents'
folders = p.dirs(ruta)
for f in folders:
app.debug(f)
```
### walk_dirs
Obtener los directorios de una ruta, no recursivamente.
```python
p = app.paths
ruta = '/home/mau/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)
```python
folders = p.walk_dirs(ruta, True)
```
### extension
Obtener la ruta de instalación de una extensión a partir de su ID.
```python
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.
```python
p = app.paths
ruta = '/home/mau/mi_archivo.ods'
ruta_nueva = p.replace_ext(ruta, 'pdf')
app.debug(ruta_nueva)
```
### open
Abrir cualquier archivo con el programas predeterminado del SO.
```python
p = app.paths
ruta = '/home/mau/archivo.pdf'
p.open(ruta)
ruta = '/home/mau/index.html'
p.open(ruta)
```
### save y read
Guardar y leer datos, el encoding predeterminado es UTF8.
```python
p = app.paths
datos = """¿Quieres saber quién eres? No preguntes. Actúa.
La acción te delineará y definirá.
Thomas Jefferson
"""
ruta = '/home/mau/temp.txt'
p.save(ruta, datos)
datos = p.read(ruta)
app.msgbox(datos)
```
Cambiar el encoding.
```python
app.paths.save(ruta, datos, 'iso-8859-1')
```
### save_bin y read_bin
Guardar y leer datos binarios.
```python
p = app.paths
datos = b'Datos binarios'
ruta = '/home/mau/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.
```python
p = app.paths
ruta = '/home/mau/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][2] para los argumentos que puede usar.
```python
p = app.paths
ruta = '/home/mau/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.
{{% notice warning %}}
Este proceso es destructivo, es buena practica siempre solicitar confirmación al usuario.
{{% /notice %}}
```python
p = app.paths
ruta = '/home/mau/temp.bin'
resultado = p.kill(ruta)
app.msgbox(resultado)
```
### copy
Copiar archivos. Devuelve la ruta completa final destino.
De un origen a una carpeta destino
```python
p = app.paths
ruta_origen = '/home/mau/temp.txt'
ruta_destino = '/home/mau/Desktop'
ruta = p.copy(ruta_origen, ruta_destino)
app.debug(ruta)
```
Cambiar el nombre destino.
```python
ruta_origen = '/home/mau/temp.txt'
ruta_destino = '/home/mau/Desktop'
nuevo_nombre = 'datos.csv'
ruta = p.copy(ruta_origen, ruta_destino, nuevo_nombre)
app.debug(ruta)
```
[1]: http://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1util_1_1XPathSettings.html
[2]: https://docs.python.org/3.7/library/csv.html