Еще один пост любви к 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'))
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 <адрес страницы>.