# -*- coding: utf-8 -*-
# @Date : 2018-10-22
# @Author : Peng Shiyu
# 使用os.path 搜索文件系统
import os
def get_files(top="."):
"""
获取路径下所有文件
"""
for root, dirs, files in os.walk(top):
for filename in files:
yield os.path.join(root, filename)
def get_dirs(top="."):
"""
获取路径下所有文件夹
"""
for root, dirs, files in os.walk(top):
for directory in dirs:
yield os.path.join(root, directory)
# 使用os.listdir 搜索文件系统
def get_files_(directory="."):
stack = []
stack.append(directory)
while stack:
current = stack.pop()
for filename in os.listdir(current):
fullname = os.path.join(current, filename)
if os.path.isdir(fullname) and not os.path.islink(fullname):
stack.append(fullname)
else:
yield fullname
# 使用DirectoryWalker 搜索文件系统
class DirectoryWalker():
def __init__(self, directory):
self.stack = [directory]
self.index = 0
self.files = []
def __getitem__(self, index):
while True:
try:
filename = self.files[self.index]
self.index += 1
except IndexError:
self.directory = self.stack.pop()
self.files = os.listdir(self.directory)
self.index = 0
else:
fullname = os.path.join(self.directory, filename)
if os.path.isdir(fullname) and not os.path.islink(fullname):
self.stack.append(fullname)
return filename
if __name__ == '__main__':
for filename in DirectoryWalker("."):
print(filename)