запись в файл через FTP в Python

После некоторых копаний я нашел ответ: https://stackoverflow.com/a/14911994/604526

Чтобы сделать Puma по умолчанию, вставьте этот код в скрипт Для / rails выше требуются 'rails / команды':

require 'rack/handler'
Rack::Handler::WEBrick = Rack::Handler.get(:puma)

Puma теперь является сервером по умолчанию, если вы используете rails s

rails s
=> Booting Puma
=> Rails 3.2.12 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Connecting to database specified by database.yml
Puma 1.6.3 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://0.0.0.0:3000

В Rails 4 вам просто нужно добавить puma -гем к Gemfile. (Протестировано с Rails 4.0.2 и Puma 2.6.0)

1
задан Paul Fisher 10 June 2009 в 03:38
поделиться

2 ответа

Похоже, исходный код должен был работать, если вы пытались загрузить файл с сервера . Команда retrbinary принимает указанный вами объект функции (то есть имя функции без () после него); он вызывается всякий раз, когда поступает часть данных (двоичный файл). В таком случае, он вызовет метод write файла, который вы открыли ed. Это немного отличается от retrlines , потому что retrlines предполагает, что данные являются текстовым файлом, и соответствующим образом преобразует символы новой строки (но повреждает, скажем, изображения).

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

ftp.storbinary("STOR test.txt", open("file_on_my_computer.txt", "rb"))
2
ответ дан 3 September 2019 в 01:28
поделиться

ftp.retrbinary принимает второй аргумент как функцию обратного вызова это может быть метод прямой записи файлового объекта ieopen ('temp.txt', 'wb'). write но вместо этого вы вызываете write напрямую

, вы можете указать свой собственный обратный вызов и делать все, что хотите, с данными

def mywriter(data):
    print data
ftp.retrbinary('RETR temp.txt', mywriter)
0
ответ дан 3 September 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: