Guest User

Untitled

a guest
Jan 15th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.36 KB | None | 0 0
  1. import ftplib
  2. import os
  3. import sys
  4. import subprocess
  5.  
  6.  
  7. def autorization():
  8. host = str(input('Host?: ')) #FTP
  9. ftp_user = str(input('User?: ')) #Login
  10. ftp_password = str(input('Password?: ')) #Password
  11.  
  12. #После чего каждую переменную подключим к авторизации:
  13. print('Попытка соединения с FTP-сервером', host)
  14. print('Login:', ftp_user)
  15. print('Password:', ftp_password)
  16. ftp = ftplib.FTP(host, ftp_user, ftp_password)
  17. welcome_text = ftp.getwelcome()
  18. print(welcome_text) # Вывели на экран Welcome-сообщение сервера
  19. directory_list = ftp.nlst() # загоняем в переменную list список содержимого директории
  20. print('Структура информации на сервере:\n')
  21. for directory in directory_list:
  22. print(directory)
  23. print('\nСоздаем список каталогов\n')
  24. directory_listing = []
  25. catalog_or(ftp, directory_listing)
  26.  
  27. def catalog_or(ftp, directory_listing):
  28. directory_list = ftp.nlst() # загоняем в переменную list список содержимого директории
  29. print('Структура информации на сервере:\n')
  30. for directory in directory_list:
  31. print(directory)
  32. print('\nСоздаем список каталогов\n')
  33. directory_listing = []
  34. for director in directory_list:
  35. try:
  36. ftp.cwd(director)
  37. directory_listing.append(director)
  38. ftp.sendcmd('cdup')
  39. except:
  40. ftplib.error_perm: 550
  41.  
  42. directory_listing = '\\'.join(directory_listing)
  43. print('На сервере имеются следующие каталоги:\n', directory_listing, '\n')
  44. menu(ftp, directory_listing)
  45.  
  46. def menu(ftp, directory_listing):
  47. menu_directory = int(input(' 1 - Выбрать каталог для работы\n 2 - Выйти вверх\n 3 - Работать в текущем каталоге\n >>> '))
  48. if menu_directory == 1:
  49. down(ftp, directory_listing)
  50. elif menu_directory == 2:
  51. up(ftp, directory_listing)
  52. elif menu_directory == 3:
  53. work(ftp, directory_listing)
  54.  
  55. def up(ftp, directory_listening):
  56. print('Выходим вверх')
  57. ftp.sendcmd('cdup')
  58. #menu(ftp, directory_listening)
  59. catalog_or(ftp, directory_listening)
  60.  
  61. def down(ftp, directory_listening):
  62. print('Войти в каталог \n')
  63. work_directory = str(input('Введите название каталога\n >>> '))
  64. print('Входим в каталог:', work_directory)
  65. ftp.cwd(work_directory)
  66. print(ftp.nlst())
  67. catalog_or(ftp, directory_listening)
  68.  
  69. def work(ftp, directory_listening):
  70. print('Работаем!')
  71.  
  72. # Определяем место, где находится сам код программы
  73. print('sys.argv[0] =', sys.argv[0])
  74. pathname = os.path.dirname(sys.argv[0])
  75. print('Скрипт находится:', pathname)
  76. print('Полный путь к скрипту:', os.path.abspath(pathname))
  77.  
  78. #Получаем список всего содержимого в папке на сервере
  79. directory_list = ftp.nlst() # загоняем в переменную list полный список содержимого директории
  80. print('Структура информации на сервере:\n', directory_list)
  81.  
  82. #Формируем список только файлов
  83. file_list = [] #список только файлов
  84. directory_listing = [] #список только каталогов
  85. for director in directory_list:
  86. try:
  87. ftp.cwd(director)
  88. directory_listing.append(director)
  89. ftp.sendcmd('cdup')
  90. except:
  91. ftplib.error_perm: 550
  92. print('Каталоги:', directory_listing)
  93. file_list = list(set(directory_list) - set(directory_listing))
  94. print('Только файлы:', file_list, '\n')
  95.  
  96. #Определяем расширение файла
  97. for file in file_list:
  98. #file_size = ftp.size(file)
  99. file_extention = file.split('.')[-1]
  100.  
  101. if file_extention == 'jpg':
  102. print(file, ' = jpg')
  103. print('Загружаем файл', file, 'c FTP')
  104. with open(file, 'wb') as local_file:
  105. ftp.retrbinary('retr ' + file, local_file.write)
  106. print(file, 'загружен')
  107.  
  108. orig_file = 'orig_' + file
  109. os.rename(file, orig_file)
  110. subprocess.run('{} {} {} {} {}'.format('magick.exe', orig_file, '-quality', '50', file))
  111. print(file, 'обработан')
  112.  
  113. #А теперь загоняем на FTP обработанный файл + оригинальный
  114. with open(file, 'rb') as file_to_upload:
  115. ftp.storbinary('stor ' + file, file_to_upload)
  116. print(file, 'успешно загружен на FTP')
  117.  
  118. with open(orig_file, 'rb') as file_to_upload:
  119. ftp.storbinary('stor ' + orig_file, file_to_upload)
  120. print(orig_file, 'успешно загружен на FTP')
  121.  
  122. file_size = os.path.getsize(file)
  123. orig_file_size = os.path.getsize(orig_file)
  124. print('\n Файл', file, 'занимал', orig_file_size, 'kb, а теперь занимает', file_size, 'kb.')
  125. print(' Экономим:', orig_file_size - file_size, 'kb\n')
  126.  
  127. #Убираем файлы на компьютере
  128. os.remove(orig_file)
  129. print(orig_file, 'удален')
  130. os.remove(file)
  131. print(file, 'удален\n')
  132.  
  133. elif file_extention == 'png':
  134. print(file, ' = png')
  135. print('Загружаем файл', file, 'c FTP')
  136. with open(file, 'wb') as local_file:
  137. ftp.retrbinary('retr ' + file, local_file.write)
  138. print(file, 'загружен')
  139.  
  140. orig_file = 'orig_' + file
  141. os.rename(file, orig_file)
  142. subprocess.run('{} {} {} {} {}'.format('magick.exe', orig_file, '-quality', '91', file))
  143. print(file, 'обработан')
  144.  
  145. #А теперь загоняем на FTP обработанный файл + оригинальный
  146. with open(file, 'rb') as file_to_upload:
  147. ftp.storbinary('stor ' + file, file_to_upload)
  148. print(file, 'успешно загружен на FTP')
  149.  
  150. with open(orig_file, 'rb') as file_to_upload:
  151. ftp.storbinary('stor ' + orig_file, file_to_upload)
  152. print(orig_file, 'успешно загружен на FTP')
  153.  
  154. file_size = os.path.getsize(file)
  155. orig_file_size = os.path.getsize(orig_file)
  156. print('\n Файл', file, 'занимал', orig_file_size, 'kb, а теперь занимает', file_size, 'kb.')
  157. print(' Экономим:', orig_file_size - file_size, 'kb\n')
  158.  
  159. #Убираем файлы на компьютере
  160. os.remove(orig_file)
  161. print(orig_file, 'удален')
  162. os.remove(file)
  163. print(file, 'удален\n')
  164. elif file_extention != 'png' or 'jpg':
  165. print(file, ' = другое расширение\n')
  166.  
  167. def index():
  168. autorization()
  169.  
  170. index()
Add Comment
Please, Sign In to add comment