Discuss / Python / 第二题解析(第一题看不懂,不知道让干嘛。。。)

第二题解析(第一题看不懂,不知道让干嘛。。。)

Topic source

蝎尾蛇嚴

#1 Created at ... [Delete] [Delete and Lock User]

做这道题之前你要先清楚几种os模块下的方法的作用:

1.    os.chdir(‘输入你想定位的路径’)     定位到某目录

2.    os.getcwd()           得到当前默认目录,直接输进去回车,来验证当前目录是什么

3.    os.listdir('.')      得到当前默认目录的文件名和文件夹名,返回的是一个List

4.    os.path.isfile(x)       用于判断对象是否为一个文件,x若是文件则返回True

5.    os.path.isdir(x)       用于判断对象是否为一个目录(文件夹),x若是文件夹则返回True

6.    os.path.abspath(x)    得到x对象的路径

7.    os.listdir()  和os.path.isdir()连用     若os.listdir()不是用的默认参数'.'时,要注意后面的isdir()里要用         os.path.join连接。具体原因参考https://blog.csdn.net/qq_28648083/article/details/53233925    

以上弄清后可以开始做了~先自己创建一个用于测试的文件夹,里面随便建立几个文件和子文件夹。然后进入到命令行窗口用os.chdir()方法打开目标文件的路径

答案:

import os

def search(str):

    a=[x for x in os.listdir('.') if os.path.isfile(x) and str in x]  #在当前目录中:找到文件名包含指定字符串的文件

    for x in a:

        print(os.path.abspath(x))   #打印出相对路径

    b=[os.path.abspath(x) for x in os.listdir('.') if os.path.isdir(x)]  #找出当前目录中的dir,得到dir的路径

    for x in b:

        a=[q for q in os.listdir(x) if os.path.isfile(os.path.join(x,q)) and str in q] #(这里的x是指子文件夹的路径)找到文件名包含指定字符串的文件(注意join的用法)

        for x in a:

            print(os.path.abspath(x))  #打印出相对路径

这个写的好,但是在第三层目录下就不适应了。。。


  • 1

Reply