Поскольку у вас уже есть glob.glob
, вам не нужно также делать os.walk
, и наоборот. Но поскольку glob совпадает только с одним шаблоном за раз, и нет никакого способа обозначить необязательный дополнительный «x» в расширении, вам потребуется либо цикл glob
дважды - один раз для каждого расширения; или используйте glob.glob( 'D:\\src\\*.xls*')
, который может соответствовать '*.xlsm'
и т. д.
Для каждого сопоставленного файла используйте shutil.move
:
for file in glob.glob('D:\\src\\*.xls*'):
shutil.move(file, 'D:\\dst\\' + os.path.basename(file))
С помощью os.walk
вы можете выполнять каждую проверку расширений с помощью fnmatch.fnmatch
в том же цикле:
for root, dirs, files in os.walk('D:\\src'):
for file in files:
if fnmatch.fnmatch(file, '*.xls') or fnmatch.fnmatch(file, '*.xlsx'):
shutil.move(f'{root}\\{file}', f'D:\\dst\\{file}')
# shutil.move(root + '\\' + file, 'D:\\dst\\' + file)