2016-06-08 8 views
0

я пытаюсь научиться Phython, так что я не знаю, много этого языка кодирования еще;)Удаление нескольких указанных папок (+) Содержание в Python

Я пытаюсь удалить некоторые заранее заданные папки (включая это содержание) с питон скрипт, я знаю, как удалить одну папки так:

def purgeOld(): 
    import os,xbmc,shutil 
    xvbmc = os.listdir(xbmc.translatePath(os.path.join('special://home/addons/'))) 
    addonfolder = xbmc.translatePath(os.path.join('special://home/addons/')) 
    for item in xvbmc: 
     if ('plugin.video.Blaaat0') in item: 
      print str(xvbmc)+str(item) 
      try: 
       shutil.rmtree(addonfolder+item, ignore_errors=True) 
      except: 
       pass 
     else: 
      pass 
    return 

Теперь я пытаюсь сделать это с помощью нескольких папок это я, что у меня есть и Allmost работает, я делаю удалить содержимое моих указанных папок, но не сама папка, как я могу изменить это ИЛИ должен ли я сделать совершенно другое? копировать/вставить несколько результатов Google отсюда и превратили его в этом «Frankencode»;-p

class cacheEntry: 
    def __init__(self, namei, pathi): 
     self.name = namei 
     self.path = pathi 

def setupXvbmcEntries(): 
    entries = 3 #make sure this refelcts the amount of entries you have 
    dialogName = ["Blaaat1", "Blaaat2", "Blaaat3"] 
    pathName = ["special://home/addons/repository.Blaaat1","special://home/addons/repository.Blaaat2", 
       "special://home/addons/repository.Blaaat3"] 

    XvbmcEntries = [] 

    for x in range(entries): 
     XvbmcEntries.append(cacheEntry(dialogName[x],pathName[x])) 

    return XvbmcEntries 

def purgeOld(): 
    import os,xbmc,shutil 
# xvbmc = os.listdir(xbmc.translatePath(os.path.join('special://home/addons/'))) 
# addonfolder = xbmc.translatePath(os.path.join('special://home/addons/')) 
# for item in xvbmc: 
#  if ('plugin.video.Blaaat0') in item: 
#   print str(xvbmc)+str(item) 
#   try: 
#    shutil.rmtree(addonfolder+item, ignore_errors=True) 
#   except: 
#    pass 
#  else: 
#   pass 

    XvbmcEntries = setupXvbmcEntries() 

    for entry in XvbmcEntries: 
     xvbmcaddons = xbmc.translatePath(entry.path) 
     if os.path.exists(xvbmcaddons)==True:  
      for root, dirs, files in os.walk(xvbmcaddons): 
       file_count = 0 
       file_count += len(files) 
       if file_count > 0: 

         for f in files: 
          os.unlink(os.path.join(root, f)) 
         for d in dirs: 
          shutil.rmtree(os.path.join(root, d)) 

       else: 
        pass 

    return 

Надеюсь, я довольно близко? Или я должен делать это с помощью более чистого/лучшего способа? С уважением, Тим.

ответ

0

первая попытка/тест, изменили его на:

def purgeOld(): 

    XvbmcEntries = setupXvbmcEntries() 

    for entry in XvbmcEntries: 
     xvbmcaddons = xbmc.translatePath(entry.path) 
     if os.path.exists(xvbmcaddons)==True:  
      for root, dirs, files in os.walk(xvbmcaddons): 
       file_count = 0 
       file_count += len(files) 
       if file_count > 0: 

        for f in files: 
         try: 
          os.unlink(os.path.join(root, f)) 
         except: 
          pass 
        for d in dirs: 
         try: 
          shutil.rmtree(os.path.join(root, d), ignore_errors=True) 
         except: 
          pass 

        try: 
         shutil.rmtree(xbmc.translatePath(os.path.join('special://home/addons/repository.Blaaat1')), ignore_errors=True) 
         shutil.rmtree(xbmc.translatePath(os.path.join('special://home/addons/repository.Blaaat2')), ignore_errors=True) 
         shutil.rmtree(xbmc.translatePath(os.path.join('special://home/addons/repository.Blaaat3')), ignore_errors=True) 
         dialog.ok("TEST-PURGE", 'we found some orphaned dependencies...','', 'NOTE: a REBOOT is highly recommended!') 
         xbmc.executebuiltin("UpdateLocalAddons") 
        except:    
         pass 

      else: 
       #dialog.ok("Purge test dialog2", "Crap cleaner all done...") 
       pass 
     else: 
      #dialog.ok("Purge test dialog3", "Crap cleaner all done...") 
      pass 

    dialog.ok("Purge dialog DONE!", "everything is as clean as a whistle...") 
# return 

Это удалить все папки, но теперь я должен указать «что удалить» в два раза, это, кажется, немного излишним? (записи указаны в setupXvbmcEntries раньше, теперь снова/extra при попытке: и т. Д.), Я предполагаю, что это можно сделать красивее, вызывать «xvbmcaddons» снова как-нибудь возможно?

0

второй попытки/тест, и по-прежнему нуждается в устранении двойного (первый запуск оставляет пустые директории как-то) ...

def purgeOLD(): 

    XvbmcEntries = setupXvbmcEntries() 

    for entry in XvbmcEntries: 
     xvbmcaddons = xbmc.translatePath(entry.path) 
     if os.path.exists(xvbmcaddons)==True:  
      for root, dirs, files in os.walk(xvbmcaddons): 
       file_count = 0 
       file_count += len(files) 
       if file_count > 0: 

        for f in files: 
         try: 
          os.unlink(os.path.join(root, f)) 
         except OSError: 
          os.remove(os.path.join(root, f)) 
        for d in dirs: 
         try: 
          shutil.rmtree(os.path.join(root, d), ignore_errors=True) 
         except: 
          pass 

       else: 
        shutil.rmtree(xbmc.translatePath(os.path.join('special://home/addons/','plugin.video.Blaaat1')), ignore_errors=True) 
        shutil.rmtree(xbmc.translatePath(os.path.join('special://home/addons/','repository.Blaaaaat2')), ignore_errors=True) 
        shutil.rmtree(xbmc.translatePath(os.path.join('special://home/addons/','repository.Blaaaaat3')), ignore_errors=True) 
        dialog.ok("TEST-PURGE", 'we found some orphaned dependencies...','', 'NOTE: a REBOOT is highly recommended!') 
        xbmc.executebuiltin("UpdateLocalAddons") 
        pass 

     else: 
      # dialog.ok("Purge test dialog", "Crap cleaner all done...") 
      pass 

    dialog.ok("-= ALL DONE =- ", 'your system seems in good condition','', '(everything is as clean as a whistle)')