[求教]os.path.abspath()输出一直不正确.

2017-05-11 21:03:01 +08:00
 LemonFirst

练习想做一个找当前目录以及子目录中匹配指定字符串的小程序.代码如下:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

#author: Lemon

import os
dirlist = []
def search(filename,path):
    for x in os.listdir(path):
        if os.path.isdir(x):
            dirlist.append( os.path.abspath(x) )
        elif filename in x:
            print(os.path.abspath(x))
    while len(dirlist)>0 :
        search(filename,dirlist.pop())

if __name__ == '__main__':
   search('qqww','.')

然后在 /home/lemon/learnPython 目录下有一个 qqwwqq 的测试文件. 可是执行后输出一直是 /home/lemon/qqwwqq 可以保证 /home/lemon 目录下绝对没有 qqwwqq 这个文件.

3435 次点击
所在节点    Python
2 条回复
mdzz
2017-05-11 21:21:44 +08:00
踩过这个坑,os.listdir(path) 的结果需要处理一下才是完整路径
full_path = os.path.join(path, x)
264768502
2017-05-12 07:52:56 +08:00
遍历目录可以用 os.walk,这样就不用递归了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/360720

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX