Реализация shutil.copytree находится в документации. Я сделал это, чтобы принять список расширений для INCLUDE.
def my_copytree(src, dst, symlinks=False, *extentions):
""" I modified the 2.7 implementation of shutils.copytree
to take a list of extentions to INCLUDE, instead of an ignore list.
"""
names = os.listdir(src)
os.makedirs(dst)
errors = []
for name in names:
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
try:
if symlinks and os.path.islink(srcname):
linkto = os.readlink(srcname)
os.symlink(linkto, dstname)
elif os.path.isdir(srcname):
my_copytree(srcname, dstname, symlinks, *extentions)
else:
ext = os.path.splitext(srcname)[1]
if not ext in extentions:
# skip the file
continue
copy2(srcname, dstname)
# XXX What about devices, sockets etc.?
except (IOError, os.error), why:
errors.append((srcname, dstname, str(why)))
# catch the Error from the recursive copytree so that we can
# continue with other files
except Error, err:
errors.extend(err.args[0])
try:
copystat(src, dst)
# except WindowsError: # cant copy file access times on Windows
# pass
except OSError, why:
errors.extend((src, dst, str(why)))
if errors:
raise Error(errors)
Использование: Например, чтобы скопировать только .config и .bat файлы ....
my_copytree (источник, Тарг, '.config', '.bat')
Изучите специальные символы регулярного выражения; dot '.' соответствует почти любому (необязательные разрывы строк). http://docs.python.org/library/re.html#regular-expression-syntax –
Я думаю, что ваш regExp нуждается в небольшой модификации, что-то вроде 'code'if re.search ('. * \. c $' , f): 'code' –