我有一堆文件需要排序。
我试图获取目录中仅文件(或仅文件夹)的名称列表。
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)
,则会正确打印。
答案 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) )]
这会在开始删除项目之前构建整个文件夹或文件列表。