Skip to content

Instantly share code, notes, and snippets.

@kylefelipe
Last active September 16, 2021 22:18
Show Gist options
  • Save kylefelipe/ff981cc917fb8734cf4a09ec42a9a607 to your computer and use it in GitHub Desktop.
Save kylefelipe/ff981cc917fb8734cf4a09ec42a9a607 to your computer and use it in GitHub Desktop.
This script rename files using a csv list that contains img_Id, file_name, new_name, receiving_folder it will create all new folders needed to paste the copies And paste them inside the receiving_folder
# This script rename files using a csv list that contains
# img_Id, file_name, new_name, receiving_folder
# it will create all new folders needed to paste the copies
# And paste them inside the receiving_folder
# Created by Kyle Felipe
# kylefelipe at gmail.com
import os
import csv
from shutil import copy2 as copy
photo_path = None
sheet_path = 'planilha_renomeacao.csv'
extensions = (".jpg", '.JPG')
files = {}
sheet_data = {}
delimiter = ','
new_folders = []
not_listed = []
def get_files(file_data, dst=None, extensions=extensions):
print("Listando arquivos")
img_path = os.getcwd()
if dst:
img_path = os.path.join(os.getcwd(), dst)
for item in os.listdir(img_path):
if item.endswith(extensions):
filename = item[:-4]
ext = item[-3:]
key_list = file_data.keys()
if filename in key_list:
file_data[filename]['origin'] = os.path.join(img_path, item)
file_data[filename]['file_name'] = item[:-4]
file_data[filename]['ext'] = ext
else:
not_listed.append(item)
def get_sheet_data(files_data, sheet=None, dst=None):
dst_folder = os.getcwd()
if dst:
dst_folder = os.path.join(os.getcwd(), dst)
with open(sheet_path, 'r') as csvfile:
csv_reader = csv.reader(csvfile, delimiter=delimiter)
content = []
folder_list = []
for _, old_name, new_name, folder in list(csv_reader)[1:]:
if not files_data.get(old_name):
files_data[old_name] = {}
files_data[old_name]['old_name'] = old_name
files_data[old_name]['new_name'] = new_name
files_data[old_name]['folder'] = folder
ext = files.get('ext') or 'jpg'
new_file_name = f"{new_name}.{ext}"
files_data[old_name]['dst'] = os.path.join(dst_folder, folder, new_file_name)
folder_list.append(folder)
for folder in list(set(folder_list)):
new_folders.append(folder)
def create_images(name_list, dst=None):
"""To test"""
if dst:
folder = os.path.join(os.getcwd(), dst)
else:
folder = os.getcwd()
for name in name_list.keys():
file_path = os.path.join(folder, f"{name}.JPG")
with open(file_path, "w") as file:
file.write('')
def create_new_folders(folders, dst=None):
print('Criando pastas: ')
created = []
not_created = []
dst_folder = os.getcwd()
if dst:
dst_folder = os.path.join(os.getcwd(), dst)
for folder in folders:
new_folder = os.path.join(dst_folder, folder)
if not os.path.isdir(new_folder):
created.append(new_folder)
print(f"Criando pasta {new_folder}")
os.makedirs(new_folder)
else:
not_created.append(new_folder)
print(f"Foram criadas {len(created)} pastas")
if len(not_created) > 0:
print( f"Pastas não criadas:")
for folder in not_created:
print(folder)
def copy_files_to_folder(files):
print('Copiando arquivos:')
for key in files.keys():
file = files[key]
if os.path.isfile(file['origin']):
new_file_name = '.'.join([file['new_name'], file['ext']])
old_file_name = '.'.join([file['old_name'], file['ext']])
src = file['origin']
dst = file['dst']
print('De -> para', src, ' -> ', dst)
copy(src, dst)
else:
not_listed.append(file)
if __name__ == '__main__':
src = 'fotos'
dst = 'fotos_organizadas'
get_sheet_data(files, dst=dst)
get_files(files, dst=src)
create_new_folders(new_folders, dst=dst)
copy_files_to_folder(files)
print('Arquivos não listados: ', len(not_listed))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment