递归扫描目录时忽略隐藏文件

Ignore hidden files while recursively scanning directories

如何在递归遍历目录时忽略隐藏文件。 我的文件结构是以下类型:

7_jan
├── 7_jan_25_cropped
│   ├── 1.tiff
|
│       
│   
├── 7_jan_50_cropped
│   ├── 1.tiff
│   ├── 10.tiff
│   ├── 11.tiff
│   ├── 12.tiff
│   ├── 13.tiff
│   ├── 14.tiff
│
└── 7_jan_75_cropped
    ├── 1.tiff
    ├── 10.tiff
    ├── 11.tiff
    ├── 12.tiff

我正在递归地存储每个文件路径,以便我以后可以对它们进行操作,但与此同时 .DS_Store 文件也被存储,我不想存储。如何删除它?

folders = []
files = []
rec_folders = []
for entry in os.scandir('/Users/swastik/csre/dataset'):
    if entry.is_dir():
        folders.append(entry.path)
        for recentry in os.scandir(entry.path):
            if not recentry.path.startswith('.'):
                rec_folders.append(recentry.path)
    elif entry.is_file():
        files.append(entry.path)
print('Folders:')
print(folders)
print('Further files:')
print(rec_folders)

输出-

 Folders:
 ['/Users/swastik/csre/dataset/7_jan']
 Further folders:
 ['/Users/swastik/csre/dataset/7_jan/7_jan_75_cropped', 
  '/Users/swastik/csre/dataset/7_jan/.DS_Store', 
  '/Users/swastik/csre/dataset/7_jan/7_jan_50_cropped', 
  '/Users/swastik/csre/dataset/7_jan/7_jan_25_cropped']

在这里,它还存储了我不想要的 .DS_Store 文件。

您可以将 if not recentry.path.startswith('.'): 替换为 if not recentry.name.startswith('.'):,这样它将忽略您的 .DS_Store 文件。