Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to shutil.copyfile only if file differ? [duplicate]

shutil.copyfile is quite useful for copying files from a location to another. Unfortunately, it does copy the file even though it already exists.

I find rsync --checksum quite convenient in this case, but I don't think it worth calling rsync from Python.

What alternative can I use to copy a file only if it does not exist or it is not the same?

like image 220
nowox Avatar asked Dec 24 '22 06:12

nowox


1 Answers

You can use the following code:

import os
import filecmp
import shutil

if not os.path.exists(dst) or not filecmp.cmp(src, dst):
    shutil.copyfile(src, dst)
like image 78
taras Avatar answered Dec 26 '22 18:12

taras