Я хочу переместить некоторые файлы из одного в другой. И имена файлов, которые я хочу переместить, находятся в List с именем file_names, а file_dirs - это dict адрес каталога этих файлов для хранения. Я использовал модуль shutil для этого:

for name in file_names:
    try:
        shutil.move(file_dirs[name], dst)
    except KeyError:
        continue

это работает хорошо, но у file_names есть несколько повторяющихся имен, это вызывает Error, который определяется модулем shutil:

~\Anaconda3\lib\shutil.py in move(src, dst, copy_function)
    559         real_dst = os.path.join(dst, _basename(src))
    560         if os.path.exists(real_dst):
--> 561             raise Error("Destination path '%s' already exists" % real_dst)
    562     try:
    563         os.rename(src, real_dst)

Error: Destination path 'D:/***/1331430.jpg' already exists

Сначала я думаю, что, может быть, я смогу добавить это Error в код:

for name in file_names:
    try:
        shutil.move(file_dirs[name], dst)
    except KeyError:
        continue
    except Error:
        continue

Но это не работает, поэтому я открыл shutil.py и обнаружил, что Error является пользовательским подклассом ошибок OSError, поэтому я изменил код:

for name in file_names:
    try:
        shutil.move(file_dirs[name], dst)
    except KeyError:
        continue
    except OSError:
        continue

Но это все еще не может работать. Когда встречается повторное имя файла, оно остается поднять Error. Как белый, я пытался решить ее, но все равно не получилось.

0
Xu Zhoufeng