python 遍历文件夹及子文件夹,输出匹配文件

本文介绍了一个Python脚本,该脚本可以遍历指定目录及其子目录,并查找以'.bam'或'.bai'结尾的文件。通过递归方式搜索所有层级的文件夹,找到匹配的文件后将其路径打印出来。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import os
import re
import sys

fistr_dir = os.path.abspath(sys.argv[1])
#print("fistr_dir is:\t{}".format(fistr_dir))

def get_all_file_from_dir(path_dir):
    # 遍历文件夹,输出文件及子文件夹内文件
    if os.path.exists(path_dir):
        path_dir = os.path.abspath(path_dir)
        for i in os.listdir(path_dir):
            path_i = os.path.join(path_dir, i)
            if os.path.isfile(path_i):
                if re.search('.bam$|bai$', path_i):
                    print(path_i)
            else:
                get_all_file_from_dir(path_i)

get_all_file_from_dir(fistr_dir)

### Python 遍历文件夹并打印文件名的代码示例 在 Python 中,遍历文件夹并打印文件名可以使用多种方法实现。以下是几种常用的方法及其实现代码: #### 方法一:使用 `os.walk` `os.walk` 是一个强大的工具,可以递归地遍历指定目录及其子目录中的所有文件文件夹。 ```python import os # 指定文件夹路径 folder_path = '/path/to/your/folder' # 使用 os.walk 遍历文件夹 for foldername, subfolders, filenames in os.walk(folder_path): for filename in filenames: # 打印文件名 print(os.path.join(foldername, filename)) # 将文件夹路径与文件名拼接[^1] ``` #### 方法二:使用 `glob` 模块 `glob` 模块可以根据通配符匹配文件路径,适用于查找特定类型的文件。 ```python import glob # 指定文件夹路径 folder_path = '/path/to/your/folder' # 使用 glob.glob 遍历文件夹下的文件 file_list = glob.glob(f'{folder_path}/*') # 匹配所有文件文件夹 for file_path in file_list: if os.path.isfile(file_path): # 确保是文件而不是文件夹 print(file_path) # 打印文件路径[^2] ``` #### 方法三:使用 `os.listdir` 和 `os.path.join` `os.listdir` 可以列出指定目录下的所有文件子目录名称,但不会递归遍历子目录。 ```python import os # 指定文件夹路径 folder_path = '/path/to/your/folder' # 使用 os.listdir 遍历文件夹 for filename in os.listdir(folder_path): file_path = os.path.join(folder_path, filename) # 拼接完整路径 if os.path.isfile(file_path): # 判断是否为文件 print(file_path) # 打印文件路径[^1] ``` #### 方法四:使用 `os.scandir`(Python 3.5+) `os.scandir` 提供了更高效的目录遍历方式,尤其适用于需要频繁访问目录信息的场景。 ```python import os # 指定文件夹路径 folder_path = '/path/to/your/folder' # 使用 os.scandir 遍历文件夹 with os.scandir(folder_path) as entries: for entry in entries: if entry.is_file(): # 判断是否为文件 print(entry.path) # 打印文件路径[^1] ``` 以上方法都可以根据需求选择使用。如果需要递归遍历子目录,推荐使用 `os.walk` 或 `os.scandir`;如果只需要遍历当前目录,可以选择 `os.listdir` 或 `glob`。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值