Also muss ich ein Verzeichnis, das nicht leer ist reinigen. Ich habe die folgenden function.For Testzwecken habe ichLöschen Sie ein Verzeichnis, das nicht leer ist auf Python
def clean_dir(location):
fileList = os.listdir(location)
for fileName in fileList:
fullpath=os.path.join(location, fileName)
if os.path.isfile(fullpath):
os.chmod(fullpath, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
os.remove(location + "/" + fileName)
elif os.path.isdir(fullpath):
if len(os.listdir(fullpath)) > 0:
clean_dir(fullpath)
#os.rmdir(location + "/" + fileName)
shutil.rmtree(location + "/" + fileName)
return
Ich habe versucht, eine JDK-Installation zu entfernen versucht rmtree und rmdir zu verwenden, aber es funktioniert nicht.
Der Fehler ich rmtree wurde unter Verwendung ist:
OSError: Cannot call rmtree on a symbolic link
Und das ist der Fehler, den ich bekam, als ich rmdir verwendet:
OSError: [Errno 66] Directory not empty: '/tmp/jdk1.8.0_25/jre/lib/amd64/server'
Der Code funktioniert einwandfrei unter Windows. Aber aus irgendeinem Grund schlägt es auf Linux fehl.
Sie weisen rmtree auf einen symbolischen Link, kein Verzeichnis hinzuzufügen. https://en.wikipedia.org/wiki/Symbolic_link – iScrE4m
Wenn es ein symbolischer Link ist, denke ich 'os.unlink (...)' ist alles was Sie brauchen. (Um das klarzustellen, wird nur der symbolische Link entfernt. Es wird nichts gelöscht, auf das der symbolische Link zeigt.) – smarx
IIRC, 'os.unlink' sollte auch Dateien löschen. – kronenpj