Вот пример, с которого можно начать:
import fnmatch
import os
import shutil
src = r'C:\tmp\src'
dest = r'C:\tmp\dest'
for file_name in os.listdir(src):
# match any files that start with two digits
if fnmatch.fnmatch(file_name, '[0-9][0-9]*'):
src_name = os.path.join(src, file_name)
dest_name = os.path.join(dest, file_name)
shutil.copyfile(src_name, dest_name)
В действии:
C:\tmp>dir /b/s
C:\tmp\dest
C:\tmp\src
C:\tmp\test_move.py
C:\tmp\src\191016_APP.txt
C:\tmp\src\191017_TGT.csv
C:\tmp\src\dont_move.txt
C:\tmp>python test_move.py
C:\tmp>dir /b/s
C:\tmp\dest
C:\tmp\src
C:\tmp\test_move.py
C:\tmp\dest\191016_APP.txt
C:\tmp\dest\191017_TGT.csv
C:\tmp\src\191016_APP.txt
C:\tmp\src\191017_TGT.csv
C:\tmp\src\dont_move.txt
Обратите внимание, что вы можете улучшить сопоставление с шаблоном, используя регулярные выражения ,но это может быть немного, чтобы войти в качестве неофита. Шаблон fnmatch , указанный выше, будет соответствовать любому файлу, который начинается с двух чисел.
РЕДАКТИРОВАТЬ: Если, например, вы хотите переместить разные файлы в разные места, вы можете изменить скрипт:
src = r'C:\tmp\src'
csv_dest = r'C:\tmp\dest_csv'
txt_dest = r'C:\tmp\dest_txt'
for file_name in os.listdir(src):
# match any csv files that start with two digits
if fnmatch.fnmatch(file_name, '[0-9][0-9]*.csv'):
src_name = os.path.join(src, file_name)
dest_name = os.path.join(csv_dest, file_name)
elif fnmatch.fnmatch(file_name, '[0-9][0-9]*.txt'):
src_name = os.path.join(src, file_name)
dest_name = os.path.join(txt_dest, file_name)
else:
print(f"Skipping {file_name}")
dest_name = None
if dest_name:
shutil.copyfile(src_name, dest_name)