因为不理解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'])
使用这个方法:
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表示的目录路径进行拼接即可。