Example of how to merge two folders using python
Introduction
I used google takeout to download a project that has been saved on google drive. However since the project is big, the project has been divided in two folders during the download:
Takeout_01
and
Takeout_02
folders.
Folders paths in my local computer:
takeout_01_path = '/Users/JDoe/Downloads/Takeout_01'takeout_02_path = '/Users/JDoe/Downloads/Takeout_02'
The goal was then to create a simple python code to merge Takeout_02 into Takeout_01.
Iterate over all files and directories
First step iterate over all files in Takeout_02:
# Loop over all files from takeout_02_pathfor path, subdirs, files in os.walk(takeout_02_path):print(path)print(files)print()
gives for example:
/Users/JDoe/Downloads/Takeout_01/Drive/Deep_Work/ideas4eo_v2/archive/sent_to_digital_ocean/first version/ideas4eo/myproject['__init__.py', 'settings.py', 'urls.py', 'wsgi.py']/Users/JDoe/Downloads/Takeout_01/Drive/Deep_Work/ideas4eo_v2/archive/sent_to_digital_ocean/first version/ideas4eo/myproject/__pycache__['settings.cpython-35.pyc', 'settings.cpython-36.pyc', 'wsgi.cpython-35.pyc', 'wsgi.cpython-36.pyc', '__init__.cpython-36.pyc', 'urls.cpython-36.pyc', '__init__.cpython-35.pyc', 'urls.cpython-35.pyc']
Check if directory exists if not create it
path_tmp = path.replace(takeout_02_path,'')path_tmp_folder_list = path_tmp.split('/')del path_tmp_folder_list[0]if len( path_tmp_folder_list ) > 0:current_path = takeout_01_pathfor folder_name in path_tmp_folder_list:current_path += '/' + folder_nameif not os.path.exists(current_path):## Special Characterscurrent_path = current_path.replace(' ', '\ ' )cmd = 'mkdir {}'.format(current_path)os.system( cmd )
Move all files from Takeout_02 to Takeout_01
for name in files:src = os.path.join(path, name)trg = path.replace('Takeout_02','Takeout_01') + '/.'## Special Characterssrc = src.replace(' ','\ ' )src = src.replace('(','\(' )src = src.replace(')','\)' )trg = trg.replace(' ','\ ' )trg = trg.replace('(','\(' )trg = trg.replace(')','\)' )cmd = "mv {} {}".format(src,trg)#print('tcon',cmd)os.system( cmd )
Note: Got the error Syntax Error Near Unexpected Token ‘(‘, to fix that it is important to remove Special Characters and Quotingin file and path names.
Full code
import ostakeout_01_path = '/Users/JDoe/Downloads/Takeout_01'takeout_02_path = '/Users/JDoe/Downloads/Takeout_02'# Loop over all files from takeout_02_pathfor path, subdirs, files in os.walk(takeout_02_path):### check if path exists in takeout_01 if not create it.path_tmp = path.replace(takeout_02_path,'')path_tmp_folder_list = path_tmp.split('/')del path_tmp_folder_list[0]if len( path_tmp_folder_list ) > 0:current_path = takeout_01_pathfor folder_name in path_tmp_folder_list:current_path += '/' + folder_nameif not os.path.exists(current_path):## Special Characterscurrent_path = current_path.replace(' ', '\ ' )cmd = 'mkdir {}'.format(current_path)os.system( cmd )### Move file to takeout_01for name in files:src = os.path.join(path, name)trg = path.replace('Takeout_02','Takeout_01') + '/.'## Special Characterssrc = src.replace(' ','\ ' )src = src.replace('(','\(' )src = src.replace(')','\)' )trg = trg.replace(' ','\ ' )trg = trg.replace('(','\(' )trg = trg.replace(')','\)' )cmd = "mv {} {}".format(src,trg)#print('tcon',cmd)os.system( cmd )#print()
See also
| Links | Tags |
|---|---|
| How to get a list of files located in a folder using python ? | Python; Linux |
| How to remove an element from a list in python ? | Python; List |
| How to check if path to a file or a directory exists in python ? | Python; Linux |
