Python快速遍历路径获取文件及文件夹路径信息
简介:
- 本模块用于快速查询指定路径下的文件路径和文件夹路径信息,可查询全部文件和文件夹,也可选择性查询,具体内容参考下述代码。
查询方式:
- 文件查询方式共4种:①查询全部文件;②查询指定名称的文件;③查询指定前缀的文件;④查询指定后缀的文件;
- 查询文件夹方式共2种:①查询全部文件夹;②查询指定名称的文件夹;
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@name: get_path_info.py
@desc: 本模块用于快速查询指定路径下的文件路径和文件夹路径信息
@author: zhangxinyao
@date: 2023/08/10
@version: 1.0
"""
import os
class GetPathInfo:
"""
快速查询指定路径下的文件和文件夹路径信息
"""
def __init__(self):
self.__all_file = []
self.__all_dir = []
def get_all_file(self, query_path, query_method=0, query_char=''):
"""
查询路径下指定后缀的全部文件
:param query_path: 查询路径,绝对路径
:param query_method: 查询文件路径信息方式,默认为0,0为查询全部文件,1为按名称查询,2为按文件名称前缀查询,3为按后缀查询
:param query_char: 查询字符,query_method非0时才生效,query_method=1,2,3时query_char分别为为查询文件名称,文件名称前缀、文件名称后缀,若query_method生效且query_char为空,则查询全部文件
:return: 查询文件绝对路径列表
"""
if query_method not in [0, 1, 2, 3]:
return ['ERROR: 查询类型错误!!!']
elif query_method and not query_char:
return ['ERROR: 查询字符为空!!!']
for item in os.scandir(query_path):
if item.is_file():
if not query_method or ((query_method == 1 and item.name == query_char) or
(query_method == 2 and item.name.startswith(query_char)) or
(query_method == 3 and item.name.endswith(query_char))):
self.__all_file.append(item.path)
else:
self.get_all_file(item, query_method, query_char)
return self.__all_file
def get_all_dir(self, query_path, query_name=''):
"""
查询路径下的全部文件夹
:param query_path: 查询路径
:param query_name: 查询文件夹名称,默认为空,为空时查询全部文件夹的路径信息
:return: 查询文件夹绝对路径列表
"""
for item in os.scandir(query_path):
if item.is_dir():
if not query_name or (item.name == query_name):
self.__all_dir.append(item.path)
self.get_all_dir(item, query_name)
return self.__all_dir
def main():
path = r'/home/zxy'
get_path_info = GetPathInfo() #创建对象
file_list_all = get_path_info.get_all_file(path) #查询全部文件
file_list_by_name = get_path_info.get_all_file(path, 1, 'hellow.txt') #查询指定名称的文件
file_list_by_pre = get_path_info.get_all_file(path, 2, 'hel') #查询指定前缀的文件
file_list_by_suff = get_path_info.get_all_file(path, 3, '.txt') #查询指定后缀的文件
dir_list_all = get_path_info.get_all_dir(path) #查询全部文件夹
dir_list_by_name = get_path_info.get_all_dir(path, 'SplicingConfig') #查询指定名称的文件
if __name__ == '__main__':
main()