目录[-]

一os.listdir

获取文件夹下面的所有后缀为.c的文件
import glob
train_path = 'D:\\AI_Kaggle_Study\voc2coco\\mask\\train\\'
xml_list = glob.glob(train_path + "/*.c")
print(xml_list)

或者

import os
xml_list = [os.path.join(train_path, i) for i in os.listdir(train_path) if i[-4:] == '.c']
print(xml_list )

或者

import os
xml_list = [os.path.join(train_path, i) for i in os.listdir(train_path) if i.endswith('.c')]
print(xml_list )

或者

import os
xml_list = [os.path.join(train_path, i) for i in os.listdir(train_path) if os.path.splitext(i)[-1] == '.c']
print(xml_list)

注意:上面的xml_list列表存储的是所有的完整的文件名路径

二、os.walk

1、walk()方法的基本语法

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

  • top -- 是你所要遍历的目录的地址.
  • topdown -- 可选,为 True,则优先遍历top目录,否则优先遍历 top 的子目录(默认为开启)。
  • onerror -- 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。
  • followlinks -- 可选,如果为 True,则会遍历目录下的快捷方式,默认开启
  • return None-- 该函数没有返回值会使用yield关键字抛出一个存放当前该层目录(root,dirs,files)的三元组,最终将所有目录层的的结果变为一个生成器

          root 所指的是当前正在遍历的这个文件夹的本身的地址

          dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)

          files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)

2、基本使用举例

2.1walk()基本使用,输出基础遍历的各个结果及形式。

#!/usr/bin/ python
# walk()基本使用,输出基础遍历的各个结果及形式。

import os
filedir = "/home/dsh/walk_test/"

def walk_1():

    filedir = "/home/dsh/walk_test/"

    for root,dirs,files in os.walk(filedir):
        print(root)
        print(dirs)
        print(files)
        print('***************************')
    #os.system('pause')

walk_1()

2.2.walk()基本使用,循环输出各级目录名称。

#!/usr/bin/ python
#walk()基本使用,循环输出各级目录名称。

import os

def walk_test():
    filedir = "/home/dsh/wall_test/"
    for root,dirs,files in os.walk(filedir):
        for dirs_list in dirs:
            print(dirs_list)
            print('************')
        #print("###############")

walk_test()

2.3walk()基本使用,循环输出各级目录下的文件名称

#!/usr/bin/ python
# walk()基本使用,输出各级目录下的文件的名称。

import os

def walk_test():
    filedir = "/home/dsh/wall_test/"
    for root,dirs,files in os.walk(filedir):
        for files_list in files:
            print(files_list)
            print("##########")

walk_test()

2.4 walk()基本使用,循环输出各级目录,及目录下的文件名称(带有全路径)

#!/usr/bin/ python
# walk()基本使用,输出各级目录,及目录下的文件的名称(带有路径)。

import os
import shutil

def walk_test():
    filedir = "/home/dsh/wall_test/"
    for root,dirs,files in os.walk(filedir):
        for dir_list in dirs:
            print(os.path.join(root,dir_list))
        for files_list in files:
            print(os.path.join(root,files_list))
        print("##########")

walk_test()