如何在Python中创建目录中的文件列表
我有一大堆文件要整理 我正在尝试获取目录中仅包含文件或文件夹的名称列表如何在Python中创建目录中的文件列表,python,Python,我有一大堆文件要整理 我正在尝试获取目录中仅包含文件或文件夹的名称列表 path = 'C:\\test\\' items = os.listdir(path) #this gives me a list of both files and folders in dir for name in items: if os.path.isfile(path + '\\' + name) == True: items.remove(name) 我希望项目将由文件夹的名称组成
path = 'C:\\test\\'
items = os.listdir(path) #this gives me a list of both files and folders in dir
for name in items:
if os.path.isfile(path + '\\' + name) == True:
items.remove(name)
我希望项目将由文件夹的名称组成。但它也有一半的文件名
但是,如果我使用printname而不是items.removename,它会正确打印。我怀疑这是因为您在迭代项目列表时更改了项目列表。这样做从来都不是个好主意。这可能会导致跳过某些元素。这就是为什么没有删除所有文件的原因。不要使用for循环,而是这样做
items = [item for item in items if isfile(join(path, item))]
join函数位于os.path中。您应该使用它,而不是自己添加反斜杠。我怀疑这是因为您在迭代时更改了项目列表。这样做从来都不是个好主意。这可能会导致跳过某些元素。这就是为什么没有删除所有文件的原因。不要使用for循环,而是这样做
items = [item for item in items if isfile(join(path, item))]
join函数位于os.path中。您应该使用它,而不是自己添加反斜杠。我会在列表理解中使用os.path.isdir,如下所示:
对于文件夹:
items = [f for f in os.listdir(path) if os.path.isdir( os.path.join(path, f) )]
对于文件:
items = [f for f in os.listdir(path) if os.path.isfile( os.path.join(path, f) )]
这将在开始删除项目之前构建文件夹或文件的整个列表。我将在列表理解中使用os.path.isdir,如下所示:
对于文件夹:
items = [f for f in os.listdir(path) if os.path.isdir( os.path.join(path, f) )]
对于文件:
items = [f for f in os.listdir(path) if os.path.isfile( os.path.join(path, f) )]
这将在开始删除项目之前生成文件夹或文件的整个列表