def _del_path(self, path):
common.addon.log('Attempting to remove folder: %s' % path, 0)
if xbmcvfs.exists(path):
try:
common.addon.log('Removing folder: %s' % path, 0)
try:
dirs, files = xbmcvfs.listdir(path)
for file in files:
xbmcvfs.delete(os.path.join(path, file))
success = xbmcvfs.rmdir(path)
if success == 0:
raise
except Exception, e:
try:
common.addon.log('Failed to delete path using xbmcvfs: %s' % e, 4)
common.addon.log('Attempting to remove with shutil: %s' % path, 0)
shutil.rmtree(path)
except:
raise
except Exception, e:
common.addon.log('Failed to delete path: %s' % e, 4)
return False
else:
common.addon.log('Folder does not exist: %s' % path)
python类rmdir()的实例源码
def recursive_delete_dir(fullpath):
'''helper to recursively delete a directory'''
success = True
if not isinstance(fullpath, unicode):
fullpath = fullpath.decode("utf-8")
dirs, files = xbmcvfs.listdir(fullpath)
for file in files:
file = file.decode("utf-8")
success = xbmcvfs.delete(os.path.join(fullpath, file))
for directory in dirs:
directory = directory.decode("utf-8")
success = recursive_delete_dir(os.path.join(fullpath, directory))
success = xbmcvfs.rmdir(fullpath)
return success
def remove_movie(self, title, year):
"""Removes the DB entry & the strm file for the movie given
Parameters
----------
title : :obj:`str`
Title of the movie
year : :obj:`int`
Release year of the movie
Returns
-------
bool
Delete successfull
"""
title = re.sub(r'[?|$|!|:|#]', r'', title)
movie_meta = '%s (%d)' % (title, year)
folder = re.sub(
pattern=r'[?|$|!|:|#]',
repl=r'',
string=self.db[self.movies_label][movie_meta]['alt_title'])
progress = xbmcgui.DialogProgress()
progress.create(self.kodi_helper.get_local_string(1210), movie_meta)
progress.update(50)
time.sleep(0.5)
del self.db[self.movies_label][movie_meta]
self._update_local_db(filename=self.db_filepath, db=self.db)
dirname = self.kodi_helper.check_folder_path(
path=os.path.join(self.movie_path, folder))
filename = os.path.join(self.movie_path, folder, movie_meta + '.strm')
if xbmcvfs.exists(dirname):
xbmcvfs.delete(filename)
xbmcvfs.rmdir(dirname)
return True
return False
time.sleep(1)
progress.close()
def deleteDir(dir):
if xbmcvfs.exists(dir):
files=xbmcvfs.listdir(dir)
if len(files)==2:
xbmcvfs.rmdir(dir)
def remove_show(self, title):
"""Removes the DB entry & the strm files for the show given
Parameters
----------
title : :obj:`str`
Title of the show
Returns
-------
bool
Delete successfull
"""
title = re.sub(r'[?|$|!|:|#]', r'', title)
label = self.series_label
rep_str = self.db[label][title]['alt_title'].encode('utf-8')
folder = re.sub(
pattern=r'[?|$|!|:|#]',
repl=r'',
string=rep_str)
progress = xbmcgui.DialogProgress()
progress.create(self.kodi_helper.get_local_string(1210), title)
time.sleep(0.5)
del self.db[self.series_label][title]
self._update_local_db(filename=self.db_filepath, db=self.db)
show_dir = self.kodi_helper.check_folder_path(
path=os.path.join(self.tvshow_path, folder))
if xbmcvfs.exists(show_dir):
show_files = xbmcvfs.listdir(show_dir)[1]
episode_count_total = len(show_files)
step = round(100.0 / episode_count_total, 1)
percent = 100 - step
for filename in show_files:
progress.update(int(percent))
xbmcvfs.delete(os.path.join(show_dir, filename))
percent = percent - step
time.sleep(0.05)
xbmcvfs.rmdir(show_dir)
return True
return False
time.sleep(1)
progress.close()