gibi bir şey sen shutil.rmtree kullanıyorsanız, üç params alır bir işlevi sağlamak için bu fonksiyonun onerror üyesini kullanabilirsiniz. Ağzınızı silerken yalnızca okunabilir dosyaları okunabilir olarak işaretlemek için bu yöntemi kullanabilirsiniz.
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)
Şimdi, adil olmak gerekirse, hata işlevi çeşitli nedenlerden dolayı çağrılabilir. 'Func' parametresi hangi fonksiyonun "başarısız" olduğunu söyler (os.rmdir() veya os.remove()). Burada yaptığınız şey, rmtree'nizin olmasını istediğiniz kurşun geçirmezliğe bağlıdır. Dosyaların yazılabilir olarak işaretlenmesine ihtiyaç duyuyorsa, yukarıda yaptığım şeyi yapabilirsiniz. siz) (uygun mantık on_rm_error eklenecek gerekir (yani dizin kaldırılmış coudln't olmadığının belirlenmesi veya kaydedilen bir paylaşım ihlali varsa bunu silinmeye çalışılırken) daha dikkatli olmak işlevini istiyorsanız . Ben kullandım
Serin! Bu daha özel bir yaklaşım. – YOU