Saltar a contenido

FTP/SFTP

Transfiere y manipula tus archivos y carpetas utilizando nuestro FTP y SFTP.

Instalación

pip install botcity-ftp-plugin

Instanciando el plugin

Primero, instanciemos el plugin pasando la información que utilizaremos para conectarnos al servidor FTP.

hostname = "<SERVER_NAME>"
username = "<USER_LOGIN>"
password = "<USER_PASSWORD>"

# Instantiate the plugin
ftp = BotFTPPlugin(hostname, username, password)

Note

Si no se pasan un nombre de usuario y una contraseña, el intento de inicio de sesión en el servidor se realizará utilizando un usuario anónimo de forma predeterminada. Algunos servidores no permiten el inicio de sesión anónimo, así que presta atención a esto.

Operaciones de archivos

Con este plugin podemos realizar las operaciones más básicas con archivos y gestionar fácilmente archivos locales y archivos que se encuentran en el servidor.

Warning

Antes de realizar operaciones de archivos, asegúrate de estar en el directorio correcto.

Utiliza el método set_current_directory para establecer tu directorio de trabajo actual en el servidor.

Subir y descargar

# Connecting to server
ftp = BotFTPPlugin("<FTP_SERVER>", "<USER>", "<PASSWORD>")

# Uploading a local file named example.txt to the server
ftp.upload_file('my_files/example.txt')

# Downloading a file named README stored on the server and saving in the local path: ftp_files/Downloads
ftp.download_file('README', 'ftp_files/Downloads')

# Closes the connection with the server
ftp.disconnect()

Cambiar nombre y eliminar

# Renaming the file named "my_file.txt" stored on the server.
ftp.rename_file('my_file.txt', 'my_updated_file.txt')

# Deleting a file from the server by name
ftp.delete_file('my_updated_file.txt')

Tip

Al cambiar el nombre de un archivo, también puedes pasar una ruta completa en lugar de solo el nombre del archivo. En este caso, el archivo, además de ser renombrado, se moverá a la ruta que se pasó.

Operaciones de carpetas

También es posible realizar operaciones básicas con los directorios presentes en el servidor.

ftp = BotFTPPlugin("<FTP_SERVER>", "<USER>", "<PASSWORD>")

# Prints the path of the current working directory.
current_folder = ftp.get_current_directory()
print(current_folder)

# Prints the list of all files and folders contained in the current working directory
ftp.list_files()

# Remove the specified directory from the server
ftp.remove_directory('tests/files/directory_1')

# Create a new directory on the server. The full path of the created directory will be returned.
dir_path = ftp.create_directory('my_directory')

# Changes the current working directory to the new created directory
ftp.set_current_directory(dir_path)

Código completo

Echemos un vistazo al código completo:

from botcity.plugins.ftp import BotFTPPlugin

# Connecting to server
ftp = BotFTPPlugin("<FTP_SERVER>", "<USER>", "<PASSWORD>")

# Creating a new directory and setting it to the current working directory
dir_path = ftp.create_directory('tests/my_directory')
ftp.set_current_directory(dir_path)

# For each file in the local folder, upload it to the folder created on the server
local_folder = 'downloads/files'
for file in os.listdir(local_folder):
    ftp.upload_file(os.path.join(local_folder, file))

ftp.list_files()

# Closes the connection with the server
ftp.disconnect()

Trabajando con servidores SFTP

Además de gestionar archivos en un servidor FTP, con este plugin también es posible realizar las mismas operaciones mostradas anteriormente en servidores SFTP a través de una conexión SSH.

Para utilizar estas mismas operaciones en un servidor SFTP, simplemente instancia un objeto de la clase BotSFTPPlugin.

from botcity.plugins.ftp import BotSFTPPlugin

# Connecting to server
sftp = BotSFTPPlugin("<SFTP_SERVER>", 22, "<USER>", "<PASSWORD>")

# Prints the name of each file in the current working directory
for file in sftp.get_files_list():
    print(file)

# Creating a new directory on the server
sftp.create_directory("folders/my_folder")

# Upload a file to the folder created on the server
sftp.upload_file("image.png", "folders/my_folder")

# Closes the connection with the server
sftp.disconnect()