python遍历子目录_python 遍历多级目录下文件的方法

最近用Python读取文件夹下所有图片文件时,遇到一点点麻烦:该文件夹包含多级子文件夹。虽然不是什么困难事情,但对新手来说可能是一件抓头的事情。

如图:读取图片及子目录下的图片

废话不多说,直接列出两种方法

递归方法:

def recurrence(path,file_list):

for file in os.listdir(path):

fs = os.path.join(path, file)

if os.path.isfile(fs):

file_list.append(fs)

elif os.path.isdir(fs):

recurrence(fs, file_list)

if __name__=="__main__":

path = 'C:\\Users\\Desktop\\captchaRec\\验证码图片1020'

filenames = [] # 带路径的文件名存入列表

recurrence(path, filenames)

print(len(filenames))

walk方法:

os自带的遍历函数

def walk(path, file_list):

ff = os.walk(path)

for root, dirs, files in ff:

for file in files:

file_list.append(os.path.join(root, file))

scandir方法:

os.scandir方法是一种比较快速的方法,但仍然需要递归来实现

def scandir(path,file_list):

for item in os.scandir(path):

if item.is_dir():

scandir(item.path,file_list)

elif item.is_file():

file_list.append(item.path)

不读取隐藏文件:

考虑到以上方法都会读取到隐藏文件,所以想不读取隐藏文件,需要增加一个文件属性判断即可。

linux 下隐藏文件是以句号 “.” 开头的文件,根据文件名即可判断是否为隐藏文件。

win 下是以文件隐藏属性确定的,所以,只能通过微软的 API 获取隐藏属性来判断是否为隐藏文件。

import win32api

attr= win32api.GetFileAttributes('dfile.txt')

print(attr) # 128表示正常

attr值对应的属性如下所示:

FILE_ATTRIBUTE_READONLY = 1 (0x1) # 属性-隐藏

FILE_ATTRIBUTE_HIDDEN = 2 (0x2) # 属性-隐藏

FILE_ATTRIBUTE_SYSTEM = 4 (0x4) # 属性-系统文件

FILE_ATTRIBUTE_DIRECTORY = 16 (0x10)

FILE_ATTRIBUTE_ARCHIVE = 32 (0x20)

FILE_ATTRIBUTE_NORMAL = 128 (0x80) # 属性-正常

FILE_ATTRIBUTE_TEMPORARY = 256 (0x100)

FILE_ATTRIBUTE_SPARSE_FILE = 512 (0x200)

FILE_ATTRIBUTE_REPARSE_POINT = 1024 (0x400)

FILE_ATTRIBUTE_COMPRESSED = 2048 (0x800)

FILE_ATTRIBUTE_OFFLINE = 4096 (0x1000)

FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192 (0x2000)

FILE_ATTRIBUTE_ENCRYPTED = 16384 (0x4000)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值