使用glob与yield递归目录文件,结果不对我想使用glob与yield递归目录下所有文件,结果不正确.代码:def brows
使用glob与yield递归目录文件,结果不对
我想使用glob与yield递归目录下所有文件,结果不正确.
代码:
def browse_files(path):
for f in glob.glob(path + os.sep + "*"):
if os.path.isdir(f):
browse_files(f)
else:
yield f #此处使用yield返回文件名
path = r'E:\WIFI\MAC\1100old'
for filename in browse_files(path):
print filename
得到的结果(错误)是:
E:\WIFI\MAC\1100old\00_19_3B_82_3A_6B.lic
E:\WIFI\MAC\1100old\00_19_3B_82_3A_6D.lic
E:\WIFI\MAC\1100old\old.tar.gz
我把yield f 改成 print f
执行browse_files(path),得到结果(正确):
E:\WIFI\MAC\1100old\00_19_3B_82_3A_6B.lic
E:\WIFI\MAC\1100old\00_19_3B_82_3A_6D.lic
E:\WIFI\MAC\1100old\old\00_19_3B_81_DB_38.lic
E:\WIFI\MAC\1100old\old\00_19_3B_81_DB_3A.lic
E:\WIFI\MAC\1100old\old\00_19_3B_82_3A_6B.lic
E:\WIFI\MAC\1100old\old\00_19_3B_82_3A_6D.lic
E:\WIFI\MAC\1100old\old.tar.gz
请问错误在哪里,求指点?
[解决办法]return browse_files(f)
干嘛不用 walk() ?
[解决办法]if os.path.isdir(f):
for f browse_files(f):
yield f
好像看到最近的3.x版本有新语法,末2句可简化成 yield from browse_files(f)
[解决办法]http://stackoverflow.com/questions/6755869/yield-in-a-recursive-function