欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对/相对路径

程序员文章站 2022-05-30 14:42:12
...

talk is cheap show me the code

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/4/25 10:43
# @File    : printFileDir.py

import os


def print_find_file_dir(filename, dirname='.', relativepath='.'):
    """编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对/相对路径
    使用os.scandir(path='.')函数进行处理

    :param filename:待查找的文件名
    :param dirname:待查找的目录
    :param relativepath:相对目录的参考目录
    :return:
    """
    # 如果给出的路径包含文件名,则直接判断
    if os.path.isfile(dirname):
        if filename in os.path.split(dirname)[1]:
            print(f"文件的绝对路径: {dirname}")
            print(f"文件的相对路径: {os.path.relpath(dirname, relativepath)}")
        return

    # 给出的是路径的话,则递归判断
    for dir_entry in os.scandir(dirname):
        if dir_entry.is_dir():
            print_find_file_dir(filename, dir_entry.path, relativepath)
        if dir_entry.is_file():
            if filename in dir_entry.name:
                print(f"文件的绝对路径: {dir_entry.path}")
                print(f"文件的相对路径: {os.path.relpath(dir_entry.path, relativepath)}")


if __name__ == '__main__':
    search_filename = 'unitTest'
    current_working_name = os.getcwd()
    search_dir_name = current_working_name
    print(f"当前工作目录: {current_working_name}")
    print_find_file_dir(search_filename, search_dir_name, current_working_name)

    # 输入带文件名的路径
    # search_filename = 'unitTest'
    # search_dir_name = r"D:\user\pys\py_project_one\LiaoXueFengCourse\unitTest.py"
    # print_find_file_dir(search_filename, search_dir_name, current_working_name)

运行结果:

编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对/相对路径

参考文档:

操作文件和目录