Почему при перемещении файлов в цикле с помощью shututil не найдено ни одной ошибки?
Я пытаюсь организовать файлы в определенные папки с помощью fnmatch, но по какой-то причине файлы не могут быть перемещены или скопированы после того, как они пройдут цикл, который я написал. Я удостоверился, что каждый каталог правильно назван и напечатан, чтобы проверить, работает ли моя программа, которая это делает.
import os
import shutil
import fnmatch
from pathlib import Path
for dirpath, dirnames, files in os.walk('.'):
for file_name in files:
if fnmatch.fnmatch(file_name, "808"):
shutil.copy(file_name, ".")
FileNotFoundError: [Errno 2] No such file or directory: 'KSHMR_Trap_808_07_F.wav
1 ответ
Вы должны следить за dirpath
затем создайте целевой путь к файлу с os.join
, Помните также, что вам может потребоваться создать подкаталоги, если они не существуют, в противном случае вы можете попытаться перезаписать существующий файл, если имена совпадают (что приведет к исключению).
import os
import shutil
import fnmatch
root = '/some/source/path'
target = '/target/path'
for dirpath, dirnames, files in os.walk(root):
for file_name in files:
if fnmatch.fnmatch(file_name, "*pattern*"):
# get the path relative to the source root and create a
# new one relative to the target
path = os.path.join(target, os.path.relpath(dirpath, root))
if not os.path.exists(path):
os.makedirs(path)
shutil.copy(os.path.join(dirpath, file_name), path)