Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除文件夹中的所有文件夹(python中的文件夹除外)?_Python_Windows_Kodi - Fatal编程技术网

如何删除文件夹中的所有文件夹(python中的文件夹除外)?

如何删除文件夹中的所有文件夹(python中的文件夹除外)?,python,windows,kodi,Python,Windows,Kodi,我正在修改Kodi中的向导,希望该向导删除“addons”目录中包含的所有文件夹,而不删除我的向导 文件夹的目录将使用Kodi内置的“special://”功能。我想删除“”中的所有内容special://home/addons“名为“plugin.video.spartan0.12.0”的文件夹除外” 我知道python需要使用“xbmc.translatePath”函数来识别文件夹路径,但我不知道如何在不删除“plugin.video.spartan0.12.0”的情况下删除文件夹中的所有内

我正在修改Kodi中的向导,希望该向导删除“addons”目录中包含的所有文件夹,而不删除我的向导

文件夹的目录将使用Kodi内置的“special://”功能。我想删除“”中的所有内容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) 
这可能有点过分(而且有点草率),但对我来说是有效的:

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')

if folder\u name!=“plugin.video.spartan0.12.0”:#删除其余的
我以前使用过shutil.rmtree,我知道它会删除整个文件夹。我想删除addons文件夹中的所有内容,但不想删除addons文件夹本身。如何操作?
os.listdir(addon\u path)
将返回变量
addon\u path
给定的系统路径的文件和目录名列表。你可以在for循环中自由删除你心中的内容,在这个例子中,你会更改/添加什么来删除addons文件夹中的所有内容(plugin.video.spartan0.12.0除外)我似乎不知道如何删除文件夹中的所有内容。我可以删除整个文件夹,但由于某些原因,我不知道如何删除文件夹中的所有其他内容。我知道这个代码不起作用,但我需要做什么?导入os dirPath=“C:\Users\Authorized User\AppData\Roaming\Kodi\addons”fileList=os.listdir(dirPath)作为文件列表中的文件名:os.remove(dirPath+“/”+fileName)好吧,你应该对windows路径使用反斜杠(\),或者更好的方法是使用
os.path.join(dirPath,fileName)
。除此之外,只要在
fileName
上对插件名做一个if语句,我想你就可以了。我需要定义路径吗?path=“C:\Users\Authorized User\AppData\Roaming\Kodi\addons”您需要传入该路径。