python基础——遍历文件方法

 

往往会需要遍历目录,文件夹下的文件。需要清楚脉络


os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])

用于通过在目录树中游走输出在目录中的文件名,向上或向下

import os
for root, dirs, files in os.walk(".", topdown=False):
    for name in files:
        print(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name))

有下面这样的文件路径

for root,dirs,files in os.walk(fileDir):
    print(root)
    print(dirs)
    print(files)
输出
aaa
['4']
['1.txt','2.txt','3.txt']
aaa\4
[]
['5.txt','6.txt']
for a in os.walk(fileDir):
    print(a[0])
    print(a[1])
    print(a[2])
输出
aaa
['4']
['1.txt','2.txt','3.txt']
aaa\4
[]
['5.txt','6.txt']


for a in os.walk('F:/a'):
    print(a[2])
['1.txt']
['3.txt', '4.txt']

此方法的a[2]就是所有的file

for root,dirs,files in os.walk(fileDir):
    for file in files:
        print(os.path.join(root,file))

输出  
aaa\1.txt
aaa\2.txt
aaa\3.txt
aaa\4\5.txt
aaa\4\6.txt

此方法通过遍历文件可以得到所有的文件

注意,当我想要所有的文件,不管在几级目录下,通过遍历就可以得到所有文件像图片,文档之类。

all = []
for a in os.walk('F:/a'):
    for i in a[2]:
        all.append(os.path.join(a[0],i))
print(all)

['F:/a\\1.txt', 'F:/a\\2\\3.txt', 'F:/a\\2\\4.txt', 'F:/a\\222\\21.txt', 'F:/a\\2222\\21.txt']

那么当想要得到所有二级目录 ,前提在各个文件夹下没有文件夹了

dir = [a[0] for a in os.walk('F:/a')]
print(dir)
is_root_dir = True
finl_dir = []
for sub_dir in dir:
    if is_root_dir:
        is_root_dir = False
        continue
    finl_dir.append(sub_dir)
print(finl_dir)
['F:/a', 'F:/a\\2', 'F:/a\\22',  'F:/a\\222', 'F:/a\\2222']
['F:/a\\2', 'F:/a\\22', 'F:/a\\222', 'F:/a\\2222']

dir3 = [a[1] for a in os.walk('F:/a')]
print(dir3)
print(dirs[0])  
[['2', '22', '222', '2222'], [], [], [], []]
['2', '22', '222', '2222']

file = [a[2] for a in os.walk('F:/a')]
print(file)
[['1.txt'], ['3.txt', '4.txt'], [], ['21.txt'], ['21.txt']]

glob.glob函数

返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值