Guest User

Untitled

a guest
Oct 17th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. """
  2. объединяет все файлы фрагментов, имеющиеся в каталоге и созданные с помощью
  3. сценария split.py,воссоздавая первоначальный файл.
  4. По своему действию этот сценарий напоминает команду ‘cat fromdir/* > tofile’
  5. в Unix, но данная реализация более переносимая и настраиваемая; сценарий
  6. экспортирует операцию объединения в виде функции, доступной для многократного
  7. использования. Зависит от порядка сортировки имен файлов, поэтому все они
  8. должны быть одинаковой длины. Сценарии разрезания/объединения можно дополнить
  9. возможностью вывода диалога с графическим интерфейсом tkinter, позволяющего
  10. выбирать файлы.
  11. ################
  12. """
  13.  
  14. import os, sys
  15. readsize = 1024
  16.  
  17. def join(fromdir, tofile):
  18. output = open(tofile, 'wb')
  19. parts = os.listdir(fromdir)
  20. parts.sort()
  21. for filename in parts:
  22. filepath = os.path.join(fromdir, filename)
  23. fileobj = open(filepath, 'rb')
  24. while True:
  25. filebytes = fileobj.read(readsize)
  26. if not filebytes: break
  27. output.write(filebytes)
  28. fileobj.close()
  29.  
  30. if __name__ == '__main__':
  31. if len(sys.argv) == 2 and sys.argv[1] == '-help':
  32. print('Use: join.py [fromdir-name to-filename]')
  33. else:
  34. if len(sys.argv) != 3:
  35. interactive: True
  36. fromdir = input('Directory contains file parts ?')
  37. tofile = input('Name of file ?')
  38. else:
  39. interactive = False
  40. fromdir, tofile = sys.argv[1:]
  41. absfrom, absto = map(os.path.abspath, [fromdir, tofile])
  42. print('Joining ', absfrom, 'to make', absto)
  43.  
  44. try:
  45. join(fromdir, tofile)
  46. except:
  47. print('error joining files:')
  48. print(sys.exc_info()[0], sys.exc_info()[1])
  49. else:
  50. print('Joining complete')
  51. if interactive: input('Press enter key!')
Add Comment
Please, Sign In to add comment