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.

1voto

CppLearner Points 3982

Je viens de répondre à une question similaire ici IMHO, si votre serveur FTP est capable de communiquer avec Fabric, utilisez Fabric. C'est bien mieux que de faire du raw ftp .

J'ai un compte FTP de dotgeek.com Je ne suis donc pas sûr que cela fonctionne pour d'autres comptes FTP.

#!/usr/bin/python

from fabric.api import run, env, sudo, put

env.user = 'username'
env.hosts = ['ftp_host_name',]     # such as ftp.google.com

def copy():
    # assuming i have wong_8066.zip in the same directory as this script
    put('wong_8066.zip', '/www/public/wong_8066.zip')

enregistrer le fichier sous fabfile.py et exécuter fab copy localement.

yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password: 
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip

Done.
Disconnecting from 1.ai... done.

Encore une fois, si vous ne voulez pas entrer le mot de passe tout le temps, ajoutez simplement

env.password = 'my_password'

-1voto

Debasish Mitra Points 305

Vous pouvez utiliser la fonction ci-dessous. Je ne l'ai pas encore testée, mais elle devrait fonctionner correctement. Rappelez-vous que la destination est un chemin de répertoire alors que la source est un chemin de fichier complet.

import ftplib
import os

def uploadFileFTP(sourceFilePath, destinationDirectory, server, username, password):
    myFTP = ftplib.FTP(server, username, password)
    if destinationDirectory in [name for name, data in list(remote.mlsd())]:
        print "Destination Directory does not exist. Creating it first"
        myFTP.mkd(destinationDirectory)
    # Changing Working Directory
    myFTP.cwd(destinationDirectory)
    if os.path.isfile(sourceFilePath):
        fh = open(sourceFilePath, 'rb')
        myFTP.storbinary('STOR %s' % f, fh)
        fh.close()
    else:
        print "Source File does not exist"

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