如何在Python中创建目录中的文件列表

时间:2016-07-04 00:00:41

标签: python

我有一堆文件需要排序。

我试图获取目录中仅文件(或仅文件夹)的名称列表。

1) Set up the canvas and event listeners
2) Declare the render function
  2a) Change the position data of the ball & paddles
  2b) Render the ball & paddles based on its data
  2c) request another animation frame
3) request an animation frame with the render function

我希望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) 包含文件夹的名称。但它也有一半的文件名称。

但是,如果我使用items代替print(name),则会正确打印。

2 个答案:

答案 0 :(得分:5)

我怀疑这是因为你正在改变"物品"列出你正在迭代它。这样做绝对不是一个好主意。这可能会导致某些元素被跳过。这就是为什么所有文件都没有删除的原因。而不是for循环,做这样的事情

items = [item for item in items if isfile(join(path, item))]

join函数位于os.path中。你应该使用它而不是自己添加反斜杠。

答案 1 :(得分:2)

我会在列表理解中使用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) )]

这会在开始删除项目之前构建整个文件夹或文件列表。