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

时间:2019-01-16 10:58:07

标签: python-3.x python-3.5

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

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文件,我不需要。

1 个答案:

答案 0 :(得分:1)

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