110 votes

Python script Téléchargement de fichiers via FTP

Je voudrais faire un script pour télécharger un fichier sur FTP.

Comment le système de connexion fonctionnerait-il ? Je cherche quelque chose comme ceci :

ftp.login=(mylogin)
ftp.pass=(mypass)

Et tout autre identifiant de connexion.

245voto

Kay Zhu Points 9703

Utilisez ftplib vous pouvez l'écrire comme ceci :

import ftplib
session = ftplib.FTP('server.address.com','USERNAME','PASSWORD')
file = open('kitten.jpg','rb')                  # file to send
session.storbinary('STOR kitten.jpg', file)     # send the file
file.close()                                    # close file and FTP
session.quit()

Utilisez ftplib.FTP_TLS à la place si votre hôte FTP requiert TLS.


Pour le récupérer, vous pouvez utiliser urllib.retrieve :

import urllib 

urllib.urlretrieve('ftp://server/path/to/file', 'file')

EDITAR :

Pour connaître le répertoire courant, utilisez FTP.pwd() :

FTP.pwd() : Renvoie le nom de chemin du répertoire courant sur le serveur.

Pour changer de répertoire, utilisez FTP.cwd(pathname) :

FTP.cwd(nom du chemin) : Définit le répertoire courant sur le serveur.

41voto

gbonetti Points 495

ftplib maintenant soutient les gestionnaires de contexte donc je suppose que cela peut être rendu encore plus facile

from ftplib import FTP
from pathlib import Path

file_path = Path('kitten.jpg')

with FTP('server.address.com', 'USER', 'PWD') as ftp, open(file_path, 'rb') as file:
        ftp.storbinary(f'STOR {file_path.name}', file)

Il n'est pas nécessaire de fermer le fichier ou la session

10voto

Tadgh Points 1869

Vous voudrez probablement utiliser l'option Module ftplib pour python

 import ftplib
 ftp = ftplib.FTP()
 host = "ftp.site.uk"
 port = 21
 ftp.connect(host, port)
 print (ftp.getwelcome())
 try:
      print ("Logging in...")
      ftp.login("yourusername", "yourpassword")
 except:
     "failed to login"

Cela vous permet de vous connecter à un serveur FTP. Ce que vous faites à partir de là dépend de vous. Votre question n'indique pas d'autres opérations qui doivent vraiment être effectuées.

8voto

Anand Points 173

Essayez ça :

#!/usr/bin/env python

import os
import paramiko 
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname', username="username", password="password")
sftp = ssh.open_sftp()
localpath = '/home/e100075/python/ss.txt'
remotepath = '/home/developers/screenshots/ss.txt'
sftp.put(localpath, remotepath)
sftp.close()
ssh.close()

4voto

Shishir Points 221

Pour éviter d'obtenir l'erreur de cryptage, vous pouvez également essayer les commandes suivantes

ftp = ftplib.FTP_TLS("ftps.dummy.com")
ftp.login("username", "password")
ftp.prot_p()
file = open("filename", "rb")
ftp.storbinary("STOR filename", file)
file.close()
ftp.close()

ftp.prot_p() s'assurer que vos connexions sont cryptées

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X