Итак, мне нужно очистить каталог, который не пуст. Я создал следующие причины тестирования function.For Я пытался удалить установку JDKУдалить каталог, который не пуст на 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
Я пытался использовать rmtree и RmDir, но терпит неудачу.
ошибка я получил с помощью rmtree является:
OSError: Cannot call rmtree on a symbolic link
И это ошибка я получил, когда я использовал RmDir:
OSError: [Errno 66] Directory not empty: '/tmp/jdk1.8.0_25/jre/lib/amd64/server'
Код правильно работает на окнах. Но по какой-то причине он терпит неудачу в Linux.
Вы направляете rmtree по символической ссылке, а не каталог. https://en.wikipedia.org/wiki/Symbolic_link – iScrE4m
Если это символическая ссылка, я думаю, что 'os.unlink (...)' - это все, что вам нужно. (Чтобы уточнить, это просто удалит символическую ссылку. Он не удалит ничего, на что указывает символическая ссылка.) – smarx
IIRC, 'os.unlink' также должен удалять файлы. – kronenpj