2010-03-17 4 views
1

Je voudrais utiliser ftplib pour télécharger des données générées par un programme sous forme de listes. La méthode la plus proche que je peux voir pour ce faire est ftp.storlines, mais cela nécessite un objet fichier avec une méthode readlines().Existe-t-il un moyen simple de faire en sorte que les listes se comportent comme des fichiers (avec ftplib)

Évidemment, je pourrais créer un fichier, mais cela semble être trop compliqué car les données ne sont pas persistantes.

Y at-il quelque chose qui pourrait faire ?:

session = ftp.new(...) 
upload = convertListToFileObject(mylist) 
session.storlines("STOR SOMETHING",upload) 
session.quit 

Répondre

3

Vous pouvez toujours utiliser StringIO (documentation), il est une mémoire tampon qui est un objet de type fichier.

from io import StringIO # version < 2.6: from StringIO import StringIO 

buffer = StringIO() 
buffer.writelines(mylist) 
buffer.seek(0) 

session.storlines("...", buffer) 

Notez que la méthode writelines ne pas ajouter des séparateurs de ligne. Donc, vous devez vous assurer que chaque chaîne dans mylist se termine par \n. Si les articles dans mylist ne se terminent pas avec un \n, vous pouvez faire:

buffer.writelines(line + '\n' for line in mylist) 
+0

C'est tout! Bien sûr. Je commence à oublier dans ma vieillesse. –

+0

Notez que vous préférerez probablement le module 'cStringIO' au module' StringIO' (si vous n'utilisez pas le module 'io'). –

Questions connexes