python 的oswalk

2018-03-21  本文已影响10人  yahzon

因为不理解oswalk, 所以测试了一下。先看说明:

os.walk(top)

递归遍历top目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames) 【文件夹路径, 文件夹名字, 文件名】。

哈哈,挺难懂的。那么就写个脚本用一用,这样就明白了。
os.walk的结果如下:
首先是结果格式,为一个三元组,
第一个元素为目录,如下面的F:\my\English\20071112\ttt',
第二个元素为ttt目录下面的目录,(这里\就是\因为转义要用斜线表示,所以斜线就用两个来表示。)
第三个元素为ttt目录下面的文件。

('F:\\my\\English\\20071112\\ttt', ['p'], ['f001001_01.TextGrid', 'pinyinStatic.csv'])

再看测试脚本:(oswalk遍历脚本自身所在文件夹)

import os
import re


print u"当前工作目录 : %s" % os.getcwd()
triple = list(os.walk(os.getcwd()))
for i in range(0, len(triple)):
    print triple[i]

测试结果:

F:\my\English\20071112>python repackage.py
当前工作目录 : F:\my\English\20071112
('F:\\my\\English\\20071112', ['test', 'ttt'], ['deStatistics.csv', 'f001001_01.TextGrid', 'repackage.py', 'test.rar', 'textgridAnalysis.py'])
('F:\\my\\English\\20071112\\test', [], ['bpinyinStatic.csv', 'f001001_01.TextGrid', 'f001018_03.TextGrid', 'f001018_04.TextGrid', 'phonemeStatic.csv', 'pinyinStatic.csv'])
('F:\\my\\English\\20071112\\ttt', ['p', 't'], ['f001001_01.TextGrid', 'pinyinStatic.csv'])
('F:\\my\\English\\20071112\\ttt\\p', [], ['test.txt'])
('F:\\my\\English\\20071112\\ttt\\t', [], ['fbs.txt'])
image.png image.png

使用这个方法:

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))

root为目录的路径,dirs为目录下的子目录,files为目录下的文件;
如果要操作文件,把files中的文件名和root表示的目录路径进行拼接即可。

上一篇下一篇

猜你喜欢

热点阅读