38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
import os
|
|
|
|
|
|
def clear_directory(directory, ignore_paths=None):
|
|
"""
|
|
Tries to delete all files and folders from a directory
|
|
|
|
:param directory:
|
|
The string directory path
|
|
|
|
:param ignore_paths:
|
|
An array of paths to ignore while deleting files
|
|
|
|
:return:
|
|
If all of the files and folders were successfully deleted
|
|
"""
|
|
|
|
was_exception = False
|
|
for root, dirs, files in os.walk(directory, topdown=False):
|
|
paths = [os.path.join(root, f) for f in files]
|
|
paths.extend([os.path.join(root, d) for d in dirs])
|
|
|
|
for path in paths:
|
|
try:
|
|
# Don't delete the metadata file, that way we have it
|
|
# when the reinstall happens, and the appropriate
|
|
# usage info can be sent back to the server
|
|
if ignore_paths and path in ignore_paths:
|
|
continue
|
|
if os.path.isdir(path):
|
|
os.rmdir(path)
|
|
else:
|
|
os.remove(path)
|
|
except (OSError, IOError):
|
|
was_exception = True
|
|
|
|
return not was_exception
|