How to Sync data from one folder to another
- tinyytopic.com
- 0
- on Feb 27, 2023
How to sync data from one folder to another using Python ready-to-use function?
This Python function synchronizes the contents of one folder to another using the robocopy command. Ready-to-use Python function to sync data from one folder to another:
def sync_folders(source_folder, dest_folder):
# Synchronizes folder contents using robocopy
cmd = ['robocopy', source_folder, dest_folder, '/e', '/mir', '/np', '/tee', '/mt:4', '/r:1', '/w:5']
with subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) as process:
for line in process.stdout:
print(line, end='')
for line in process.stderr:
print(line, end='')
Write your main code as a sample below,
import subprocess
sync_folders('C:\Downloads\Data', 'C:\Downloads\Save To')
The output of the code is,

How does the function work?
This is a Python function called sync_folders that synchronizes the contents of two folders using the robocopy command
The function takes two arguments, source_folder and dest_folder, which are the paths to the source and destination folders, respectively.
Inside the function, a list called cmd is created, which contains the arguments to pass to the robocopy command. These arguments include the /e, /mir, /np, /tee, /mt:4, /r:1, and /w:5 options, which instruct robocopy to copy all subdirectories, mirror the source folder to the destination folder, display progress without a percentage, output to console and log file, use 4 threads, retry once on failed copies, and wait 5 seconds between retries, respectively.
The subprocess.Popen function is then used to create a new process object, which runs the robocopy command with the specified arguments. The stdout, stderr, and universal_newlines parameters are set to capture the output of robocopy as text.
The function then loops through the stdout and stderr output using a for loop, and prints each line to the console using print(line, end='').
If there is an error during the execution of the robocopy command, the error message will be printed to the console as well.