Ir para o conteúdo

Manipulação de arquivos

Monitore seu sistema de arquivos quanto a novos arquivos, compacte e descompacte arquivos e pastas usando nosso novo plugin de arquivos.

Instalação

pip install botcity-files-plugin

Importando o Plugin

Depois de instalar este pacote, a próxima etapa é importar o pacote para o seu código e começar a usar as funções.

from botcity.plugins.files import BotFilesPlugin

Trabalhando com arquivos ZIP

Com este plugin, você pode facilmente zipar e descompactar pastas e arquivos, conforme necessário.

Usando arquivos específicos

# Instancie o plugin
arquivos = BotFilesPlugin()

# Lista de todos os arquivos que serão fechados
caminho_arquivos = ['documentos/exemplo_1.txt', 'imagens/teste.png']

# Cria um arquivo zip chamado "meu_zip" contendo os arquivos fornecidos
arquivos.zip_files(caminho_arquivos, "meu_zip.zip")

Usando pastas inteiras

Também podemos criar um arquivo zip contendo todo o conteúdo do diretório especificado, incluindo arquivos e subpastas.

# Instancie o plugin
arquivos = BotFilesPlugin()

# Cria um arquivo zip chamado "resultado" contendo todos os conteúdos de diretório "documentos"
arquivos.zip_directory("arquivos/documentos", "resultado.zip")

Descompactando Arquivos

É possível descompactar apenas um arquivo específico ou todo o conteúdo de um arquivo zip.

# Instancie o plugin
arquivos = BotFilesPlugin()

# Descompactando todo o conteúdo de "meu_zip" e salvando para a pasta "conteudo_zip"
arquivos.unzip_all(zip_file="meu_zip.zip", destination_folder="arquivos/conteudo_zip")

# Descompactando apenas um único arquivo contido em "meu_zip"
arquivos.unzip_file(zip_file="meu_zip.zip", file_to_extract="imagem.png")

Aguardando arquivos

Em alguns casos é necessário aguardar que os arquivos sejam salvos e disponíbilizados em determinadas pastas, como processos em que os arquivos são baixados de um site.

Nesses casos, podemos não saber exatamente o nome e o caminho do arquivo que serão baixados, tornando o processo de aguardar pelo arquivo mais complicado. Além disso, ao trabalhar com arquivos grandes, podemos não saber exatamente quanto tempo leva para aguardar o arquivo, afetando o restante do processo.

Com isso em mente, o método wait_for_file oferece uma maneira de aguardar um novo arquivo sem nenhuma dificuldade. É possível monitorar uma pasta de destino através de um gerenciador de contexto (context manager) até que um novo arquivo seja completamente criado ou modificado.

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

# Instanciando o webbot
bot = WebBot()

# Configurando o navegador padrão
bot.browser = Browser.FIREFOX

# Configurando o WebDriver
bot.driver_path = r"geckodriver.exe"

# Instanciando o plugin
arquivos = BotFilesPlugin()

# Acessando uma página da web através do webbot
bot.browse("https://filesamples.com/formats/bin")

# Aguardando um novo arquivo ".bin" a ser salvo na pasta "downloads"
with arquivos.wait_for_file(
    directory_path="documentos/downloads",
    file_extension=".bin",
    timeout=300000):
    print("\nBaixando arquivo...")

    # Clicando para começar o download
    if bot.find(label="download_file", matching=0.97, waiting_time=10000):
        bot.click()

# Continuando o processo depois de esperar pelo arquivo
print("\ndownload concluído, continuando o processo...")

# Obtendo o caminho completo do mais novo arquivo ".bin" na pasta "downloads"
caminho_arquivo = arquivos.get_last_created_file(
    directory_path="documentos/downloads",
    file_extension=".bin")

...