2016-01-26 6 views
0

Я изменяю мастер в Kodi, и я хотел бы, чтобы мастер удалял все папки, содержащиеся в каталоге «addons», не удаляя мой мастер.Как удалить все папки в папке, кроме одной в python?

В каталоге папки будет использована функция «special: //», встроенная в Kodi. Я хотел бы удалить все внутри «special: // home/addons», за исключением папки с именем «plugin.video.spartan0.12.0»

Я знаю, что python должен использовать функцию «xbmc.translatePath» для распознавания путь к папке, но я не знаю, как удалить все в папке, не удаляя «plugin.video.spartan0.12.0»

Любая помощь будет оценена.


Вот что я в настоящее время

import os 
dirPath = "C:\Users\Authorized User\AppData\Roaming\Kodi\addons" 
fileList = os.listdir(dirPath) 
for fileName in fileList: 
    os.remove(dirPath+"/"+fileName) 
+2

Что-то же просто, как 'если имя_папки ! = "plugin.video.spartan0.12.0": # удалить остальное' должно работать –

+0

Я использовал shutil.rmtree раньше, и я вижу, что он удаляет всю папку. Я хочу удалить все содержимое папки аддонов, но не удалять папку аддонов. Как мне это сделать? –

+0

'os.listdir (addon_path)' будет возвращать список имен файлов и каталогов для системного пути, заданного переменной 'addon_path'. Вы можете удалять содержимое вашего сердца в течение цикла по этим данным. –

ответ

0

Это, вероятно, избыточна (и немного неряшливый), но он работал на меня:

import os 
import shutil 

#---------------------------------------------------------------------- 
def remove(path): 
    """ 
    Remove the file or directory 
    """ 
    if os.path.isdir(path): 
     try: 
      shutil.rmtree(path) 
     except OSError: 
      print "Unable to remove folder: %s" % path 
    else: 
     try: 
      if os.path.exists(path): 
       os.remove(path) 
     except OSError: 
      print "Unable to remove file: %s" % path 


#---------------------------------------------------------------------- 
def cleanup(dirpath, folder_to_exclude): 
    for root, dirs, files in os.walk(dirpath, topdown=True): 
     for file_ in files: 
      full_path = os.path.join(root, file_) 
      if folder_to_exclude not in full_path: 
       print 'removing -> ' + full_path 
       remove(full_path) 
     for folder in dirs: 
      full_path = os.path.join(root, folder) 
      if folder_to_exclude not in full_path: 
       remove(full_path) 

if __name__ == '__main__': 
    cleanup(r'c\path\to\addons', 'plugin.video.spartan0.12.0') 
+0

Нужно ли определять путь? path = "C: \ Users \ Авторизованный пользователь \ AppData \ Роуминг \ Kodi \ addons" –

+0

Вам нужно будет пройти путь. –