python查找子目录文件名问题

jiyiliuniany 学生  2017-12-04 07:27:21
原题为:编写一个search(s)的函数,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出完整路径。

以下为我的代码
import os
def search(s):
for x in os.listdir('.'):
if os.path.isfile(x) and (os.path.splitext(x)[0].find(s) != -1):
print(x)
elif os.path.isdir(x):
newpath = os.path.join('/home/jiiyiliunian/Desktop', str(x))
os.chdir(newpath)
search(s)
else:
print("error")

search("test")


运行结果如下:


如果注释掉elif和else部分的代码,运行正常


初学python的小白实在找不到问题了。。请教前辈们,代码哪里出错了?谢谢
...全文
118 2 点赞 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
extend 2017-12-05
import os
def search(s,path):
    print(os.listdir(path))
    for x in os.listdir(path):
        #print(x)
        if os.path.isfile(x) and (os.path.splitext(x)[0].find(s) != -1):
            print(x)
        
        elif os.path.isdir(x):
            newpath = os.path.join(path, str(x))
            print(newpath)
            #os.chdir(newpath)
            search(s,newpath)
        else:
            print("error")
            #return
        
search("test",".")
改了一下,可用,你试试。 不用os.chdir(newpath)这种改变当前目录的方式。 递归,你要用传目录的方式。
  • 打赏
  • 举报
回复
extend 2017-12-05
有逻辑漏洞,如果一个文件即不满足if,又不满足elif,那就执行print("error"),然后,就没有然后了,函数就退出了。
  • 打赏
  • 举报
回复
相关推荐
发帖
脚本语言
加入

3.7w+

社区成员

JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
申请成为版主
帖子事件
创建了帖子
2017-12-04 07:27
社区公告

CSDN 脚本语言社区接受专栏投稿(专栏会在顶部创建专属你的栏目),投稿需满足以下要求:

  • 脚本语言技术相关;
  • 文章持续更新,保持活跃;
  • 内容清晰明了,干货为主;
  • 文章排版有序,有条有理。

本社区开通招聘专栏,发布招聘信息请联系版主,发布者需要保证招聘信息真实有效,CSDN 平台和版主不对招聘内容负责!

联系方式:私聊版主、发送邮件、QQ联系等均可: