Только что вспомнил, что однажды я написал несколько файлов, чтобы решить эту проблему раньше. Вы можете найти исходный код здесь, на моем Github .
Короче говоря, здесь есть две интересующие функции:
list_files(loc, return_dirs=False, return_files=True, recursive=False, valid_exts=None)
copy_files(loc, dest, rename=False)
В вашем случае вы можете скопировать и вставить эти функции в ваш проект и изменить copy_files
следующим образом:
def copy_files(loc, dest, rename=False):
# get files with full path
files = list_files(loc, return_dirs=False, return_files=True, recursive=True, valid_exts=('.txt',))
# copy files in list to dest
for i, this_file in enumerate(files):
# change name if renaming
if rename:
# replace slashes with hyphens to preserve unique name
out_file = sub(r'^./', '', this_file)
out_file = sub(r'\\|/', '-', out_file)
out_file = join(dest, out_file)
copy(this_file, out_file)
files[i] = out_file
else:
copy(this_file, dest)
return files
Тогда просто назовите это так:
copy_files('mailDir', 'destFolder', rename=True)
Схема переименования может быть не совсем той, которую вы хотите, но она, по крайней мере, не переопределит ваши файлы. Я считаю, что это должно решить все ваши проблемы.