2016-06-08 11 views
0

나는 내가 아직이 코딩 언어를 많이 몰라요 Phython를 배우려고 노력하고있어에서 여러 지정된 폴더 (+ 내용) 삭제 내가 이런 ONE 폴더를 제거하는 방법을 알고, 파이썬 스크립트) 내용이다 : 이제파이썬

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 작동하고 무엇을, 나는하지 나는 여러 폴더로이 작업을 수행하기 위해 노력하고있어 폴더 자체는 아니지만 내 지정된 폴더의 내용을 제거합니다. 어떻게 변경할 수 있습니까? 아니면 완전히 달라야합니까? 나는/여기에서 몇 구글 결과를 붙여 잘하면 내가 아주 가까이있어이 '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에 지정되었으므로 이제 다시 시도해야합니다 : 등),이 작업을 더 예쁘게 수행 할 수 있다고 가정하고 '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)')