Sunday, November 16, 2014

Python Module: shutil

Module shutil is usually used for copy files or folders

Example:
import shutil

# to copy file and change its name
shutil.copy2('c:/test/test.txt', 'c:/test.py')

# to copy entire directory
shutil.copytree('c:/test/', 'c:/test2/')

# to copy entire directory and ignore certain files
shutil.copytree('c:/test/', 'c:/test2/', ignore=shutil.ignore_patterns('*.pyc'))

# to copy entire directory and ignore both certain files and folders
import fnmatch
def ignorePatterns(patterns):
    def _ignorePatterns(path, names):
        ignoreList = []

        for i in os.walk(path):
            # to ignore all version folders (v0001, v0002, ...)
            folderName = i[0].rpartition('/')[2]
            if folderName.startswith('v') and folderName[1:].isdigit():
                ignoreList.append(folderName)
            else:
                # ignore files
                for pattern in patterns:
                    for f in fnmatch.filter(i[2], pattern):
                        ignoreList.append(f)
        ignoreList = list(set(ignoreList))
        return set(ignoreList)
    return _ignorePatterns
patterns = ['*.pyc', '*.py~']
shutil.copytree('c:/test/', 'c:/test2/', ignore = ignorePatterns(patterns))

No comments:

Post a Comment