Saltar a contenido

Manipulación de archivos

Supervise tu sistema de archivos en busca de nuevos archivos, comprime y descomprime archivos y carpetas utilizando nuestro nuevo complemento de archivos.

Instalación

pip install botcity-files-plugin

Importando el complemento

Después de instalar este paquete, el siguiente paso es importar el paquete en tu código y comenzar a utilizar las funciones.

from botcity.plugins.files import BotFilesPlugin

Trabajando con archivos ZIP

Con este complemento, puedes comprimir y descomprimir fácilmente carpetas y archivos según sea necesario.

Utilizando archivos específicos

# Crear una instancia del plugin
files = BotFilesPlugin()

# Lista de todos los archivos que se comprimirán
files_path = ['documents/example_1.txt', 'images/test.png']

# Crea un archivo zip llamado "my_zip" que contiene los archivos proporcionados
files.zip_files(files_path, "my_zip.zip")

Utilizando carpetas completas

También podemos crear un archivo ZIP que contenga todo el contenido del directorio especificado, incluyendo archivos y subcarpetas.

# Crear una instancia del plugin
files = BotFilesPlugin()

# Crea un archivo zip llamado "result" que contiene todo el contenido
# del directorio "documents"
files.zip_directory("files/documents", "result.zip")

Descomprimiendo archivos

Es posible descomprimir solo un archivo específico o todo el contenido de un archivo ZIP.

# Crear una instancia del plugin
files = BotFilesPlugin()

# Descomprimir todo el contenido de "my_zip" y guardarlo en la carpeta "zip_content"
files.unzip_all(zip_file="my_zip.zip", destination_folder="files/zip_content")

# Unzipping only a single file contained in "my_zip"
files.unzip_file(zip_file="my_zip.zip", file_to_extract="image.png")

Esperando archivos

En algunos casos, es necesario esperar a que se guarden archivos y estén disponibles en ciertas carpetas, como en procesos donde se descargan archivos de un sitio web.

En estos casos, es posible que no conozcamos el nombre y la ruta exacta del archivo que se descargará, lo que complica el proceso de espera del archivo. Además, al trabajar con archivos grandes, es posible que no sepamos exactamente cuánto tiempo se tarda en esperar el archivo, lo que afecta al resto del proceso.

Teniendo esto en cuenta, el método wait_for_file ofrece una forma de esperar un nuevo archivo sin dificultades. Es posible supervisar una carpeta de destino a través de un context manager hasta que se cree o modifique completamente un nuevo archivo.

from botcity.plugins.files import BotFilesPlugin
from botcity.web import WebBot

...

# Creación de instancias de WebBot
bot = WebBot()

# Configurar el navegador predeterminado
bot.browser = Browser.FIREFOX

# Configuración del 'WebDriver'
bot.driver_path = r"geckodriver.exe"

# Crear una instancia del plugin
files = BotFilesPlugin()

# Acceder a una página web a través del WebBot
bot.browse("https://filesamples.com/formats/bin")

# Esperando a que se guarde un nuevo archivo ".bin" en la carpeta "downloads"
with files.wait_for_file(
    directory_path="Documents/downloads",
    file_extension=".bin",
    timeout=300000):
    print("\nDownloading file...")

    # Haciendo clic para iniciar la descarga
    if bot.find(label="download_file", matching=0.97, waiting_time=10000):
        bot.click()

# Continuar el proceso después de esperar el archivo
print("\nDownload completed, continuing the process...")

# Obtener la ruta completa del archivo ".bin" más reciente en la carpeta "downloads"
file_path = files.get_last_created_file(
    directory_path="Documents/downloads",
    file_extension=".bin")

...