Есть ли простой способ заставить списки вести себя как файлы (с помощью ftplib) - PullRequest
1 голос
/ 17 марта 2010

Я бы хотел использовать ftplib для загрузки сгенерированных программой данных в виде списков. Ближайший метод, который я вижу для этого, - ftp.storlines, но для этого требуется объект файла с методом readlines ().

Очевидно, я мог бы создать файл, но это кажется излишним, поскольку данные не являются постоянными.

Есть ли что-нибудь, что могло бы сделать это?:

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

1 Ответ

3 голосов
/ 17 марта 2010

Вы всегда можете использовать StringIO ( документация ), это буфер памяти, который является файловым объектом.

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

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

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

Обратите внимание, что метод writelines не добавляет разделители строк. Поэтому вам нужно убедиться, что каждая строка в mylist заканчивается на \n. Если элементы в mylist не заканчиваются на \n, вы можете сделать:

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