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¶
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.
Trabajando con archivos ZIP¶
Con este complemento, puedes comprimir y descomprimir fácilmente carpetas y archivos según sea necesario.
Utilizando archivos específicos¶
Utilizando carpetas completas¶
También podemos crear un archivo ZIP que contenga todo el contenido del directorio especificado, incluyendo archivos y subcarpetas.
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")
...