【Python】查找文件路径

链接:飞桨AI Studio - 人工智能学习与实训社区

作业一:输出 9*9 乘法口诀表(注意格式)

注意:提交作业时要有代码执行输出结果。

def table():
    #在这里写下您的乘法口诀表代码吧!



if __name__ == '__main__':
    table()

思路:循环嵌套+格式化输出

tip:如果想使用print() 时不输出换行,添加参数end=''

参考代码:

def table():
    #在这里写下您的乘法口诀表代码吧!
    for i in range(1,10):
        for j in range(1,i+1):
            print('%d*%d=%d '%(j,i,i*j),end='')
        print('\n')

if __name__ == '__main__':
    table()

输出:

作业二:查找特定名称文件

遍历”Day1-homework”目录下文件;

找到文件名包含“2020”的文件;

将文件名保存到数组result中;

按照序号、文件名分行打印输出。

注意:提交作业时要有代码执行输出结果。

#导入OS模块
import os
#待搜索的目录路径
path = "Day1-homework"
#待搜索的名称
filename = "2020"
#定义保存结果的数组
result = []

def findfiles():
    #在这里写下您的查找文件代码吧!

    

if __name__ == '__main__':
    findfiles()

思路:递归得到文件下全部文件及子文件名称,使用find()查找字符串中是否含有相关字符,如果有则添加进result数组,最后打印出序号和文件名。

tip:os.listdir()、os.walk()获取全部文件名,find()查找字符串中的子字符串,如果有返回index,没有返回-1。os.path.join()用文件分隔符拼接字符串,jion()自定义分隔符。

1、查找文件名:

1、os.listdir() 方法用于返回指定的目录下包含的文件或子目录的名字的列表。这个列表以字母顺序。其得到的是仅当前路径下的文件名,不包括子目录中的文件,如果需要得到所有文件需要递归。 它也不包括 '.' 和 '..' 即使它在目录中。

        example:

def findfiles():
    p = os.listdir(path)
    print(p)

        输出:

['26', '4', '1', '18']

         只能获取一级子文件夹的名字,其中更深层的子文件名没有得到。

使用递归方法,获取全部文件及子文件名。

参考代码1:

#导入OS模块
import os
#待搜索的目录路径
path = "Day1-homework"
#待搜索的名称
filename = "2020"
#定义保存结果的数组
result = []

def findfiles(path):
    if path:
        try:
            paths = os.listdir(path)
        except NotADirectoryError as e:
            pass
        except UnboundLocalError as e:
            pass
        try:
            for p in paths:
                findfiles(os.path.join(path,p))
                #print(os.path.join(path,p))  
                result.append(os.path.join(path,p))
        except UnboundLocalError as e:
            pass
        
if __name__ == '__main__':
    findfiles(path)
    #print(result)
    i=0
    for r in result:
        if r.find(filename)!=-1:
            print(i,r)
            i+=1


输出:

2、os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。

语法格式为:os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])

方法参数说明:top:要遍历的目录的路径

topdown:可选,如果为 True,则优先遍历 top 目录,以及 top 目录下的每一个子目录,否则优先遍历 top 的子目录,默认为 True

onerror: 可选, 需要一个 callable 对象,当 walk 异常时调用

followlinks:可选, 如果为 True,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录,默认为 False。

返回值: 三元组 (root, dirs, files)

root :所指的是当前正在遍历的目录的地址

dirs :当前文件夹中所有目录名字的 list (不包括子目录)

files :当前文件夹中所有的文件 (不包括子目录中的文件)

参考代码2:

#导入OS模块
import os
#待搜索的目录路径
path = "Day1-homework"
#待搜索的名称
filename = "2020"
#定义保存结果的数组
result = []

def findfiles():
    #在这里写下您的查找文件代码吧!
    lists=[]
    i=0
    for root,dirs,files in os.walk(path):
        #root所指的是当前正在遍历的目录的地址
        #dirs当前文件夹中所有目录名字的 list (不包括子目录)
        #files当前文件夹中所有的文件 (不包括子目录中的文件)
        for f in files:
            #获得全部文件下的子文件路径
            if f.find(filename)!=-1:
                p = os.path.join(root,f)
                result.append(p)
    #输出序号及其文件名
    for r in result:
        print('%d:%s'%(i,r))
        i+=1
    


if __name__ == '__main__':
    findfiles()

输出:

 

参考文章:

python找到指定文件名_如何在Python中找到想要的文件名_weixin_39842475的博客-CSDN博客

python第3章-4 查找指定字符_python字符串查找特定字符_神的恩惠。的博客-CSDN博客

python学习—第一步—Python小白逆袭大神(第一天)_浅墨入画,岁月入禅的博客-CSDN博客_python小白逆袭大神

猜你喜欢

转载自blog.csdn.net/qq_51701007/article/details/129098451