如何在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) )]
这将在开始删除项目之前生成文件夹或文件的整个列表