Hom's Blog


Python:os.walk遍历文件夹所有文件

os.walk(PATH), PATH是个文件夹路径,当然可以用.或者../这样啦.

  • 返回的是个三元元组为元素的列表, 每个元素代表了一个文件夹下的内容.第一个就是当前文件夹下内容.
  • 返回的三元元组代表(该工作文件夹, 该文件夹下的文件夹的列表, 该文件夹下文件的列表).

所以,

  1. 获得所有子文件夹, 就是(d代表这三元元组): os.path.join(d[0],d[1]);
  2. 获得所有子文件, 就是: os.path.join(d[0],d[2]);

以下例子使用了两套循环, 遍历后得到所有文件名的list后再循环所有文件:

result = [os.path.join(dp, f) for dp, dn, fs in os.walk("_pages") for f in fs if os.path.splitext(f)[1] == '.html']
for fname in result:
	#do something

实际等于

result=[]
for dp, dn, fs in os.walk("_pages"):
	for f in fs:
		if (os.path.splitext(f)[1] == '.html'):
			result.append(os.path.join(dp, f))
for fname in result:
	#do something

最后判断是否html后缀获得文件名, 还可以使用glob:

result = [y for x in os.walk(PATH) for y in glob.glob(os.path.join(x[0], '*.txt'))]

还可以使用迭代器方法:

from itertools import chain
import glob
result = (chain.from_iterable(glob.iglob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))


◆ 本文地址: http://platinhom.github.io/2016/01/14/py-oswalk/, 转载请注明 ◆

前一篇: Python:requests-cookies
后一篇: 抓取一个杂志的文献PDF


Contact: Hom / 已阅读()
Source 类别: Coding  标签: Python