# Copy a directory structure to another, but only copying specific files

script.py:

#!/usr/bin/python

import os

srcDir = os.getcwd()

dirName = 'target_directory'

dstDir = os.path.abspath(dirName)

def ignore_list(path, files):

filesToIgnore = []

for fileName in files:

fullFileName = os.path.join(os.path.normpath(path), fileName)

if (not os.path.isdir(fullFileName)
and not fileName.endswith('pyc')
and not fileName.endswith('ui')
and not fileName.endswith('txt')
and not fileName == '__main__.py'
and not fileName == 'dcpp.bat'):

filesToIgnore.append(fileName)

return filesToIgnore

# start of script

shutil.copytree(srcDir, dstDir, ignore=ignore_list)


As shutil.copytree() has no option where I can give names for required files to copy like "ignore," I have modified the argument of ignore to give "required files to copy."

Review my code.

Looks ok for a specific task, but the code is not reusable at all. It would be more useful to create a function ignore_except that could be used like this to perform the same task:
shutil.copytree(srcDir, dstDir,

The source code of shutil.ignore_patterns would be a good starting point for such function.