Можно ли загрузить объект в память на FTP с помощью Python?
Вот что я делаю сейчас:
mysock = urllib.urlopen('http://localhost/image.jpg') fileToSave = mysock.read() oFile = open(r"C:\image.jpg",'wb') oFile.write(fileToSave) oFile.close f=file('image.jpg','rb') ftp.storbinary('STOR '+os.path.basename('image.jpg'),f) os.remove('image.jpg')
Запись файлов на диск и последующее удаление их, похоже, являются дополнительной работой в системе, которой следует избегать. Можно ли загрузить объект в память на FTP с помощью Python?
- Сохранять объект для использования в другой программе на python
- Питонический поточно-безопасный объект
- Как печатать класс или объекты класса с помощью print ()?
- Как объявить метод, который принимает экземпляр в качестве аргумента в Python?
- python – Когда WebSocketHandler и TornadoWebSocketClient полностью удалены?
Из-за утиного ввода файловый объект ( f
в вашем коде) должен поддерживать только .read(blocksize)
для работы с storbinary
. Когда вы сталкиваетесь с такими вопросами, я перехожу к источнику, в этом случае lib / python2.6 / ftplib.py:
def storbinary(self, cmd, fp, blocksize=8192, callback=None): """Store a file in binary mode. A new port is created for you. Args: cmd: A STOR command. fp: A file-like object with a read(num_bytes) method. blocksize: The maximum data size to read from fp and send over the connection at once. [default: 8192] callback: An optional single parameter callable that is called on on each block of data after it is sent. [default: None] Returns: The response code. """ self.voidcmd('TYPE I') conn = self.transfercmd(cmd) while 1: buf = fp.read(blocksize) if not buf: break conn.sendall(buf) if callback: callback(buf) conn.close() return self.voidresp()
Как прокомментировано, он хочет только файл-подобный объект , даже если он даже не является особенно похожим на файл, ему просто нужно read(n)
. StringIO предоставляет такие «файлы памяти».
import urllib import ftplib ftp = ftplib.FTP(...) f = urllib.urlopen('http://localhost/image.jpg') ftp.storbinary('STOR image.jpg', f)
- Извлечение данных из строки, в которую встроена структура данных в самой строке
- Использование скриптов python в перехватах subversion на окнах
- python перебирает список объектов
- Использование объектов Python в C ++
- OOP python – удаление экземпляра класса из списка
- Сохранение объектов класса в рамках робота
- Объект «Int» не является итерируемым
- Python: Должен ли я помещать свои данные в списки или атрибуты объектов?
- Как я могу использовать строку с тем же именем объекта в Python для доступа к самому объекту?
- Изменить представление объекта Python
- Форсировать создание нового объекта памяти python