1
0

find_and_copy_gui.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. """
  2. задача: есть папка с jpg , найти файлы в другой папке с таким же названием но расширением .arw и скопировать в другу папку эти файлы arw.
  3. """
  4. import os, shutil
  5. import random
  6. from tkinter import *
  7. from tkinter import filedialog as fd
  8. from tkinter.messagebox import showerror, showinfo
  9. def callback_jpg():
  10. jpg_dir = fd.askdirectory()
  11. jpg_entry.delete(0, END)
  12. jpg_entry.insert(0, jpg_dir)
  13. return
  14. def callback_arw():
  15. arw_dir = fd.askdirectory()
  16. arw_entry.delete(0, END)
  17. arw_entry.insert(0, arw_dir)
  18. return
  19. def callback_copy():
  20. copy_dir = fd.askdirectory()
  21. copy_entry.delete(0, END)
  22. copy_entry.insert(0, copy_dir)
  23. return
  24. def callback_exec():
  25. jpg_dir = jpg_entry.get()
  26. arw_dir = arw_entry.get()
  27. copy_dir = copy_entry.get()
  28. if jpg_dir == "":
  29. showerror(title="Ошибка", message="Папка с .jpg пустая")
  30. elif arw_dir == "":
  31. showerror(title="Ошибка", message="Папка с .arw_dir пустая")
  32. else:
  33. os.makedirs(jpg_dir, exist_ok=True)
  34. os.makedirs(arw_dir, exist_ok=True)
  35. if copy_dir == "":
  36. copy_dir = os.path.join(arw_dir, "copy")
  37. os.makedirs(copy_dir, exist_ok=True)
  38. # Получаем список jpg-файлов
  39. jpg_files = os.listdir(jpg_dir)
  40. print(jpg_files)
  41. # Получаем список jpg-файлов
  42. arw_files = os.listdir(arw_dir)
  43. print(arw_files)
  44. for jpg_file in jpg_files:
  45. jpg_basename, ext = os.path.splitext(jpg_file)
  46. for arw_file in arw_files:
  47. arw_basename, ext = os.path.splitext(arw_file)
  48. if jpg_basename == arw_basename:
  49. # куда копировать
  50. copy_path = os.path.join(copy_dir, f"{arw_basename}.arw")
  51. # что копировать
  52. arw_path = os.path.join(arw_dir, f"{arw_basename}.arw")
  53. shutil.copy(arw_path, copy_path)
  54. showinfo(title="Выполнено", message="Выполнено")
  55. return
  56. window = Tk() #Создаём окно приложения.
  57. window.title("Копирование .arw")
  58. window.geometry('400x300')
  59. frame = Frame(
  60. window, #Обязательный параметр, который указывает окно для размещения Frame.
  61. padx = 10, #Задаём отступ по горизонтали.
  62. pady = 10 #Задаём отступ по вертикали.
  63. )
  64. frame.pack(expand=True)
  65. jpg_lb = Label(
  66. frame,
  67. text="Папка с .jpg файлами"
  68. )
  69. jpg_lb.grid(row=1, column=1, padx=4, pady=4)
  70. jpg_btn = Button(
  71. frame,
  72. text='Выбор jpg',
  73. command=callback_jpg
  74. )
  75. jpg_btn.grid(row=1, column=2, padx=4, pady=4)
  76. jpg_entry = Entry(
  77. frame,
  78. )
  79. jpg_entry.grid(row=2, column=1, columnspan=4, padx=4, pady=4)
  80. arw_lb = Label(
  81. frame,
  82. text="Папка с .arw файлами"
  83. )
  84. arw_lb.grid(row=4, column=1, padx=4, pady=4)
  85. arw_btn = Button(
  86. frame,
  87. text='Выбор arw',
  88. command=callback_arw
  89. )
  90. arw_btn.grid(row=4, column=2, padx=4, pady=4)
  91. arw_entry = Entry(
  92. frame,
  93. )
  94. arw_entry.grid(row=5, column=1, columnspan=4, padx=4, pady=4)
  95. copy_lb = Label(
  96. frame,
  97. text="Папка, куда копировать"
  98. )
  99. copy_lb.grid(row=7, column=1, padx=4, pady=4)
  100. copy_btn = Button(
  101. frame,
  102. text='Куда',
  103. command=callback_copy
  104. )
  105. copy_btn.grid(row=7, column=2, padx=4, pady=4)
  106. copy_entry = Entry(
  107. frame,
  108. )
  109. copy_entry.grid(row=8, column=1, columnspan=4, padx=4, pady=4)
  110. exec_btn = Button(
  111. frame,
  112. text='Выполнить',
  113. command=callback_exec
  114. )
  115. exec_btn.grid(row=9, column=2, padx=4, pady=4)
  116. window.mainloop()