пятница, 25 января 2013 г.

Пример работы с ftplib.

Еще один пост любви к Python. Как передать некоторый список файлов(имеются полные пути) на ftp-сервер? Очень просто :) 


server_ftp = '192.168.0.102' #для примера, в программе можно задать что угодно
login_ftp = "fox100500"
pass_ftp = "fox_134342"
port_ftp = "1069"


def ftp_online():
    ftpConnect = FTP()
    try:
        ftpConnect.connect(server_ftp, port_ftp)
        ftpConnect.login(login_ftp, pass_ftp)
        ftpConnect.quit()
        ftpConnect.close()
        enable = 1
    except:
        enable = 0
    return enable


def copy_file(ftp, path):  # ftp - через что соединяемся, path - абсолютный путь до передаваемого файла
    name_file = path.split('/')[-1:][0]
    send_file = open(path, 'rb')
    ftp.storbinary('STOR ' + name_file, send_file, 1024)


def read_ways_from_file(file_name):
    f = open(file_name, 'r')
    return f.readlines()


def copy_all_files(ftp, lines):  # ftp - через что соединяемся, lines - list абсолютных путей до файлов
    for line in lines:
        line = line.replace('\n', '')
        copy_file(ftp, line)


if __name__ == "__main__":

    if ftp_online() == 1:
        ftpConnect = FTP()
        ftpConnect.connect(server_ftp, port_ftp)
        ftpConnect.login(login_ftp, pass_ftp)
        ftpConnect.cwd('/information')
        st = ftpConnect.pwd()

        copy_all_files(ftpConnect, read_ways_from_file('download.txt'))

Есть некий текстовый файл download.txt, в котором записаны пути до нужных файлов. Нам лишь необходимо запустить скрипт и он скопирует эти файлы на сервак. 

Для чего это может использоваться? Ответ прост - отложенная отправка файлов на android. Есть куча программ, которые превращают андрюшу в сервер, также есть всячиские task менеджеры, которые могут включать и выключать wifi в определенное время, то есть нам лишь необходимо настроить запуск wifi андроида ночью, настроить запуск скрипта - граббера информации(скачка хабра, новостей, запись радио), а потом взять и передать все с помощью данного скриптика. 
Также хочу отметить, что для скачки контента из интерната лучше всего пользоваться wget. Помимо регулировки порядка вложенности скачки страниц он имеет кучу настроек. Допустим, чтобы скачать web-страницу полностью надо ввести в консоль:  wget -k -p <адрес страницы>.  


Комментариев нет:

Отправить комментарий