Ir para o conteúdo

FTP/SFTP

Transfira e manipule seus arquivos e pastas usando nosso FTP e SFTP.

Instalação

pip install botcity-ftp-plugin

Instanciando o plugin

Primeiro, vamos instanciar o plugin que passando as informações que usaremos para conectar ao servidor FTP.

nome_host = "<nome_servidor>"
nome_usuario = "<login_usuario>"
senha = "<senha_usuario>"

# Instancie o plugin
FTP = BotFTPPlugin(nome_host, nome_usuario, senha)

Observação

Se nenhum nome de usuário e senha forem passados, a tentativa de login do servidor será feita usando um usuário anônimo por padrão. Alguns servidores não permitem login anônimo, então preste atenção nisso.

Operações de arquivo

Com este plugin, podemos fazer as operações mais básicas com arquivos e gerenciar facilmente arquivos e arquivos locais que estão no servidor.

Aviso

Antes de executar operações de arquivo, verifique se você está no diretório correto.

Use o método set_current_directory para definir seu diretório de trabalho atual no servidor.

Carregando e baixando

# Conectando ao servidor
ftp = BotFTPPlugin("<SERVIDOR_FTP>", "<USUARIO>", "<SENHA>")

# Carregando um arquivo local chamado exemplo.txt para o servidor
ftp.upload_file('meus_arquivos/exemplo.txt')

# Baixando um arquivo chamado README armazenado no servidor e salvando no caminho local: ftp_files/downloads
ftp.download_file('README', 'ftp_arquivos/downloads')

# Fecha a conexão com o servidor
ftp.disconnect()

Renomeando e excluindo

# Renomear o arquivo chamado "meu_arquivo.txt" armazenado no servidor.
ftp.rename_file('meu_arquivo.txt', 'meu_arquivo_atualizado.txt')

# Excluindo um arquivo do servidor pelo nome
ftp.delete_file('meu_arquivo_atualizado.txt')

Dica

Ao renomear um arquivo, você também pode passar um caminho completo em vez de apenas o nome do arquivo.Nesse caso, o arquivo, além de ser renomeado, será movido para o caminho que foi aprovado.

Operações com pasta

Também é possível fazer operações básicas com os diretórios presentes no servidor.

ftp = BotFTPPlugin("<SERVIDOR_FTP>", "<USUARIO>", "<SENHA>")

# Imprime o caminho do diretório de trabalho atual.
pasta_atual = ftp.get_current_directory()
print(pasta_atual)

# Imprime a lista de todos os arquivos e pastas contidas no diretório de trabalho atual
ftp.list_files()

# Remova o diretório especificado do servidor
ftp.remove_directory('testes/arquivos/diretorio_1')

# Crie um novo diretório no servidor. O caminho completo do diretório criado será devolvido.
caminho_dir = ftp.create_directory('meu_diretorio')

# Altera o diretório de trabalho atual para o novo diretório criado
ftp.set_current_directory(caminho_dir)

Código completo

Vamos dar uma olhada no código completo:

from botcity.plugins.ftp import BotFTPPlugin

# Conectando ao servidor
ftp = BotFTPPlugin("<SERVIDOR_FTP>", "<USUARIO>", "<SENHA>")

# Criando um novo diretório e configurando -o para o diretório de trabalho atual
caminho_dir = ftp.create_directory('testes/meu_diretorio')
ftp.set_current_directory(caminho_dir)

# Para cada arquivo na pasta local, envie -o para a pasta criada no servidor
pasta_local = 'downloads/aqruivos'
for arquivo in os.listdir(pasta_local):
    ftp.upload_file(os.path.join(pasta_local, arquivo))

ftp.list_files()

# Fecha a conexão com o servidor
ftp.disconnect()

Trabalhando com servidores SFTP

Além de gerenciar arquivos em um servidor FTP, com este plugin, também é possível executar as mesmas operações mostradas acima nos servidores SFTP através de uma conexão SSH.

Para usar essas mesmas operações em um servidor SFTP, basta instanciar um objeto da classe BotSFTPPlugin.

from botcity.plugins.ftp import BotSFTPPlugin

# Conectando ao servidor
sftp = BotFTPPlugin("<SERVIDOR_FTP>", 22, "<USUARIO>", "<SENHA>")

# Imprime o nome de cada arquivo no diretório de trabalho atual
for arquivo in sftp.get_files_list():
    print(arquivo)

# Criando um novo diretório no servidor
sftp.create_directory("pastas/minha_pasta")

# Carregue um arquivo para a pasta criada no servidor
sftp.upload_file("image.png", "pastas/minha_pasta")

# Fecha a conexão com o servidor
sftp.disconnect()