我想构建一个程序,它使用一些基本代码来读取文件夹并告诉我文件夹中有多少文件.我目前是这样做的:
import os
folders = ['Y:\\path1', 'Y:\\path2', 'Y:\\path3']
for stuff in folders:
for root, dirs, files in os.walk(stuff, topdown=True):
print("there are", len(files), "files in", root)
Run Code Online (Sandbox Code Playgroud)
这很有效,直到"main"文件夹中有多个文件夹,因为文件夹/文件管理不佳,它可能会返回一个长的垃圾文件列表.所以我最多只想进入第二级.例:
Main Folder
---file_i_want
---file_i_want
---Sub_Folder
------file_i_want <--*
------file_i want <--*
------Sub_Folder_2
---------file_i_dont_want
---------file_i_dont_want
Run Code Online (Sandbox Code Playgroud)
我知道如何去只有第一层用break,用del dirs[:]取自这篇文章和也是这个职位.
import os
import pandas as pd
folders = ['Y:\\path1', 'Y:\\path2', 'Y:\\path3']
for stuff in folders:
for root, dirs, files in os.walk(stuff, topdown=True):
print("there are", len(files), "files in", root)
del dirs[:] # …Run Code Online (Sandbox Code Playgroud) 我有这样的备份目录结构(所有目录都不为空):
/home/backups/mysql/
2012/
12/
15/
2013/
04/
29/
30/
05/
02/
03/
04/
05/
Run Code Online (Sandbox Code Playgroud)
我想通过仅提供根目录路径来获取包含备份的所有目录的列表:
get_all_backup_paths('/home/backups/mysql', level=3)
Run Code Online (Sandbox Code Playgroud)
这应该返回:
/home/backups/mysql/2012/12/15
/home/backups/mysql/2013/04/29
/home/backups/mysql/2013/04/30
/home/backups/mysql/2013/05/02
/home/backups/mysql/2013/05/03
/home/backups/mysql/2013/05/04
/home/backups/mysql/2013/05/05
Run Code Online (Sandbox Code Playgroud)
那些不应该出现在结果中:
/home/backups/mysql/2012
/home/backups/mysql/2012/12
/home/backups/mysql/2013
/home/backups/mysql/2013/04
/home/backups/mysql/2013/05
Run Code Online (Sandbox Code Playgroud)
是否有任何方法可以降低os.listdir3级,排除所有其他级别?如果是的话,我会恭喜你的帮助.
def get_all_backup_paths(dir, level):
# ????
Run Code Online (Sandbox Code Playgroud)