[ Python ] problème libftp [ resolu ]

problème libftp [ resolu ] [ Python ] - Python - Programmation

Marsh Posté le 30-04-2003 à 21:38:26    

retrlines(command[, callback])
    Retrieve a file or directory listing in ASCII transfer mode. command should be an appropriate "RETR" command (see retrbinary() or a "LIST" command (usually just the string 'LIST';). The callback function is called for each line, with the trailing CRLF stripped. The default callback prints the line to sys.stdout.
 
j'aimerais utiliser cette methode mais il faudrait que je redirige ce qui va s'afficher vers une liste par exemple, ou au pire un fichier.
 
Je vois pas trop comment m'y prendre.
 
CHaiCA


Message édité par chaica le 01-05-2003 à 11:59:02
Reply

Marsh Posté le 30-04-2003 à 21:38:26   

Reply

Marsh Posté le 30-04-2003 à 21:40:03    

et alors, ou est le problème?

Reply

Marsh Posté le 30-04-2003 à 21:41:53    

Ben je n'arrive pas à récupere ce qui sort sur stdout. Je veux le mettre dans une liste et non pas que ca apparaisse dans mon terminal.
 
CHaiCA

Reply

Marsh Posté le 30-04-2003 à 22:07:20    

ben tu n'as qu'a donner une fonction qui fait rien
 
genre
 
def doNothing(arg): pass
 
 
ou alors tu peux faire
 
 
class Adder:
 
  def __init__(self):
     self.liste=[]
 
  def __call__(self, arg):
     self.liste.append(arg)
 
 
a=Adder()
 
ftp.retrlines('LIST', a)


Message édité par Taz le 30-04-2003 à 22:07:50
Reply

Marsh Posté le 01-05-2003 à 02:33:46    

plus simple :

Code :
  1. liste = []
  2. ftp.retrlines('LIST', liste.append)


 
EDIT: ++Taz> a mon avis ca marche pas ton truc, les methodes de la ftplib attendent generalement une methode comme second arg, pas un objet...


Message édité par e_esprit le 01-05-2003 à 02:34:56
Reply

Marsh Posté le 01-05-2003 à 09:19:55    

oupas, c'est vrai que j'avais pas pensé à la méthode simple, mais la mienne marche à coup sur, je l'utilise tout le temps avec d'autres fonctions. Je dis ma méthode, mais c'est une technique archi connue.
 
 
EDIT: typage dynamique, on s'en fout méthode, fonction ou objet, on veut juste un objet avec l'attribut __call__


Message édité par Taz le 01-05-2003 à 09:20:57
Reply

Marsh Posté le 01-05-2003 à 11:56:26    

++Taz a écrit :

oupas, c'est vrai que j'avais pas pensé à la méthode simple, mais la mienne marche à coup sur, je l'utilise tout le temps avec d'autres fonctions. Je dis ma méthode, mais c'est une technique archi connue.
 
 
EDIT: typage dynamique, on s'en fout méthode, fonction ou objet, on veut juste un objet avec l'attribut __call__


Vi c'est pa fo... mais un chti peu tordu quand meme...
Sinon pour utiliser avec un fichier, faut faire qqchose du style :

Code :
  1. class Fichier():
  2.     def __init__(self, filename):
  3.         self.file = open(filename, 'w')
  4.     def ajoute(self, line): 
  5.         self.file.write(line)
  6.         self.file.write('\n')
  7.        
  8. [OU]   
  9.     def __call__(self, line):
  10.         self.file.write(line)
  11.         self.file.write('\n')
  12. ...
  13. fich = Fichier('listing.txt')
  14. ftp.retrlines('LIST', fich.ajoute)
  15. [OU]
  16. ftp.retrlines('LIST', fich)


 
Spa bete finalement ton système de redefinir __call__
J'ai appris un truc, merci :jap:  
Spa si tordu que a en y reflechissant... :D

Reply

Marsh Posté le 01-05-2003 à 11:58:37    

Merci à vous deux!
 
CHaiCA

Reply

Marsh Posté le 01-05-2003 à 11:58:54    

ben c'est le principe des objets-fonctions (que sont les focntions Python)
 
c'est également tres utilisé en C++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed