Как я могу получить объединение двух списков в Python без изменения одного из них? [Дубликат]

Если вы используете shutil.rmtree, вы можете использовать член onerror этой функции для предоставления функции, которая принимает три параметра: функция, путь и информация об исключении. Вы можете использовать этот метод, чтобы пометить файлы только для чтения как доступные для записи, когда вы удаляете свое дерево.

import os, shutil, stat

def on_rm_error( func, path, exc_info):
    # path contains the path of the file that couldn't be removed
    # let's just assume that it's read-only and unlink it.
    os.chmod( path, stat.S_IWRITE )
    os.unlink( path )

shutil.rmtree( TEST_OBJECTS_DIR, onerror = on_rm_error )

Теперь, если быть справедливым, функцию ошибки можно было бы вызвать по целому ряду причин. Параметр «func» может рассказать вам, какая функция «сбой» (os.rmdir () или os.remove ()). То, что вы здесь делаете, зависит от того, насколько вы хотите, чтобы ваш Rmtree был доказательством пули. Если это действительно случай, когда нужно отметить файлы как доступные для записи, вы можете сделать то, что я сделал выше. Если вы хотите быть более осторожным (т. Е. Определить, удаляется ли каталог не удаляется или если при попытке его удалить нарушение доступа к файлу), соответствующая логика должна быть вставлена ​​в функцию on_rm_error () .

614
задан Ryan Thompson 3 December 2010 в 09:16
поделиться