Ich möchte shutil.rmtree
in Python verwenden, um ein Verzeichnis zu entfernen. Das fragliche Verzeichnis enthält ein Steuerverzeichnis .git
, das als schreibgeschützt markiert und ausgeblendet wird.shutil.rmtree zum Entfernen von Readonly-Dateien
Das schreibgeschützte Flag bewirkt, dass rmtree
fehlschlägt. In Powershell würde ich "del-force" ausführen, um das Entfernen des schreibgeschützten Flags zu erzwingen. Gibt es in Python ein Äquivalent? Ich würde wirklich lieber nicht den ganzen Baum zweimal gehen, aber das onerror
Argument rmtree scheint nicht um die Operation zu wiederholen, so kann ich nicht
def set_rw(operation, name, exc):
os.chmod(name, stat.S_IWRITE)
shutil.rmtree('path', onerror=set_rw)
Haben Sie versucht, die Datei im 'onerror 'zu entfernen 'callback? –
Es ist seltsam, dass .git schreibgeschützt ist – wim
Ich müsste einen vollständigen (rekursiven) rmtree im onerror machen, da es das .git-Unterverzeichnis ist, das readonly ist, aber das könnte funktionieren. Und 'git is make Versteckt und readonly vermutlich, um das Unix-Verhalten zu simulieren, dotfiles nicht anzuzeigen. Ich denke, das Verhalten ist schrecklich (hg tut das nicht), aber ich muss damit leben :-( –