patternpythonMinor
Copy a directory structure to another, but only copying specific files
Viewed 0 times
directorybutfilescopyinganotherstructurespecificonlycopy
Problem
script.py:
As
Review my code.
#!/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.
Solution
Looks ok for a specific task, but the code is not reusable at all. It would be more useful to create a function
The source code of
ignore_except that could be used like this to perform the same task:shutil.copytree(srcDir, dstDir,
ignore=ignore_except('*.pyc', '*.ui', '*.txt', '__main__.py', 'dcpp.bat'))The source code of
shutil.ignore_patterns would be a good starting point for such function.Code Snippets
shutil.copytree(srcDir, dstDir,
ignore=ignore_except('*.pyc', '*.ui', '*.txt', '__main__.py', 'dcpp.bat'))Context
StackExchange Code Review Q#42123, answer score: 3
Revisions (0)
No revisions yet.