Advertisement
Rusfatal

copy_xlsx_from_folder_to_folder_python

Feb 9th, 2022 (edited)
514
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.78 KB | None | 0 0
  1. Задача скопировать файлы Эксель в неизменном виде
  2.  
  3. import os
  4. import shutil
  5.  
  6. # адрес папки, где лежат файлы для перезаписи
  7. dir_start = r"C:\Users\sport\Desktop\test"
  8. # адрес папки куда записать файлы
  9. dir_end = r"C:\Users\sport\Desktop\test2"
  10. # создаем пустой список, куда будем складывать имена и адреса всех перезаписываемых файлов
  11. filelist=[]
  12. # Получаем все xlsx файлы из папки dir_start включая подпапки
  13. for path, subdirs, files in os.walk(dir_start):
  14.     # Пробегаем по файлам из списка файлов files
  15.     for file in files:
  16.         if (file.endswith('.xlsx') or file.endswith('.xls') or file.endswith('.XLS')):
  17.             # добавляем в список filelist имя и путь считанного из папки dir_start файла
  18.             filelist.append(os.path.join(path, file))
  19.             # осуществляем копирование файла в новую папку. Название файла не меняем
  20.             shutil.copy(os.path.join(path, file), os.path.join(dir_end, file))
  21. number_of_files=len(filelist)
  22. [print(f"Файл {x} записан в папку {dir_end }") for x in filelist]
  23. print(f"Всего записано {number_of_files} файла/ов")
  24. Задача скопировать файлы Эксель , оставив только 1й лист.
  25.  
  26. import pandas as pd
  27. import os
  28. # адрес папки, где лежат файлы для перезаписи
  29. dir_start = r"C:\Users\sport\Desktop\test"
  30. # адрес папки куда записать файлы
  31. dir_end = r"C:\Users\sport\Desktop\test2"
  32. # создаем пустой список, куда будем складывать имена и адреса всех перезаписываемых файлов
  33. filelist=[]
  34. # Получаем все xlsx файлы из папки dir_start включая подпапки
  35. for path, subdirs, files in os.walk(dir_start):
  36.     # Пробегаем по файлам из списка файлов files
  37.     for file in files:
  38.         if (file.endswith('.xlsx') or file.endswith('.xls') or file.endswith('.XLS')):
  39.             # добавляем в список filelist имя и путь считанного из папки dir_start файла
  40.             filelist.append(os.path.join(path, file))
  41.             # считываем файл с расширением  xlsx xls XLS в объект пандаса ExcelFile
  42.             excel_data = pd.ExcelFile(os.path.join(path, file))
  43.             # кладем считанный файл в объект панадаса ExcelWriter для последующей записи
  44.             writer = pd.ExcelWriter(os.path.join(dir_end, file))
  45.             # В переменную df_tmp считываем первый рабочий лист файла
  46.             df_tmp = excel_data.parse(excel_data.sheet_names[0])
  47.             # записываем
  48.             df_tmp.to_excel(writer, index=False)
  49.             writer.save()
  50. number_of_files=len(filelist)
  51. [print(f"Файл {x} записан в папку {dir_end }") for x in filelist]
  52. print(f"Всего записано {number_of_files} файла/ов")
  53. Задача скопировать файлы Эксель со всеми внутренними листами, при этом названия листов поменять на числовые по порядку
  54.  
  55. import pandas as pd
  56. import os
  57. # адрес папки, где лежат файлы для перезаписи
  58. dir_start = r"C:\Users\sport\Desktop\test"
  59. # адрес папки куда записать файлы
  60. dir_end = r"C:\Users\sport\Desktop\test2"
  61. # создаем пустой список, куда будем складывать имена и адреса всех перезаписываемых файлов
  62. filelist=[]
  63. # Получаем все xlsx файлы из папки dir_start включая подпапки
  64. for path, subdirs, files in os.walk(dir_start):
  65.     # Пробегаем по файлам из списка файлов files
  66.     for file in files:
  67.         if (file.endswith('.xlsx') or file.endswith('.xls') or file.endswith('.XLS')):
  68.             # добавляем в список filelist имя и путь считанного из папки dir_start файла
  69.             filelist.append(os.path.join(path, file))
  70.             # считываем файл с расширением  xlsx xls XLS в объект пандаса ExcelFile
  71.             excel_data = pd.ExcelFile(os.path.join(path, file))
  72.             # кладем считанный файл в объект панадаса ExcelWriter для последующей записи
  73.             writer = pd.ExcelWriter(os.path.join(dir_end, file))
  74.             # пробегаем по рабочим листам в объекте пандаса ExcelFile
  75.             i = 0
  76.             for sheet in excel_data.sheet_names:  # здесь получаем имя листа
  77.                 i += 1  # новое имя листа в скопированном файле
  78.                 df_tmp = excel_data.parse(sheet)  # здесь считываем в пандасовский датафрейм лист полученный на предыдущем шаге
  79.                 df_tmp.to_excel(writer, sheet_name=str(i), index=False)  # записываем лист в объект writer
  80.             writer.save()
  81. number_of_files=len(filelist)
  82. [print(f"Файл {x} записан в папку {dir_end }") for x in filelist]
  83. print(f"Всего записано {number_of_files} файла/ов")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement