Python获取文件夹下的所有文件名前缀

在Python开发中,获取文件夹下的所有文件名前缀是一项常见的任务。本文将介绍如何使用Python来实现这个功能,并帮助刚入行的小白完成这个任务。

实现步骤

下面是完成获取文件夹下所有文件名前缀的整个流程,可以用表格展示:

步骤 描述
步骤一 获取指定文件夹下的所有文件名
步骤二 提取文件名的前缀
步骤三 去除重复的前缀

接下来,我们将一步步详细介绍每个步骤需要做什么,并提供相应的代码示例。

步骤一:获取指定文件夹下的所有文件名

首先,我们需要获得指定文件夹下的所有文件名。可以使用Python的os模块来实现这个功能。

import os

def get_filenames(folder):
    filenames = []
    for filename in os.listdir(folder):
        if os.path.isfile(os.path.join(folder, filename)):
            filenames.append(filename)
    return filenames

代码解释:

  • os.listdir(folder)返回指定文件夹下的所有文件和文件夹的名称。
  • os.path.isfile(os.path.join(folder, filename))判断指定路径是否为文件。
  • 如果是文件,则将文件名添加到filenames列表中。

步骤二:提取文件名的前缀

提取文件名的前缀是获取文件夹下所有文件名前缀的关键步骤。我们可以使用Python的字符串处理方法来实现。

def extract_prefix(filenames):
    prefixes = []
    for filename in filenames:
        prefix = filename.split('.')[0]
        prefixes.append(prefix)
    return prefixes

代码解释:

  • filename.split('.')[0]将文件名按照.进行分割,取第一部分作为文件名的前缀。
  • 将提取的前缀添加到prefixes列表中。

步骤三:去除重复的前缀

获取文件夹下所有文件名前缀后,可能会存在重复的前缀。我们需要对前缀列表进行去重操作。

def remove_duplicates(prefixes):
    return list(set(prefixes))

代码解释:

  • set(prefixes)将前缀列表转换为集合,去除重复的元素。
  • list(set(prefixes))将去重后的集合转换为列表。

完整代码

下面是整个过程的完整代码示例:

import os

def get_filenames(folder):
    filenames = []
    for filename in os.listdir(folder):
        if os.path.isfile(os.path.join(folder, filename)):
            filenames.append(filename)
    return filenames

def extract_prefix(filenames):
    prefixes = []
    for filename in filenames:
        prefix = filename.split('.')[0]
        prefixes.append(prefix)
    return prefixes

def remove_duplicates(prefixes):
    return list(set(prefixes))

folder = 'path/to/folder'
filenames = get_filenames(folder)
prefixes = extract_prefix(filenames)
unique_prefixes = remove_duplicates(prefixes)

print(unique_prefixes)

以上代码可以在Python中获取指定文件夹下的所有文件名前缀,并打印出去重后的前缀列表。

结果展示

为了更好地展示结果,我们可以使用饼状图和类图来可视化前缀的分布和代码结构。

饼状图

使用mermaid语法中的pie标识出前缀的分布情况。

pie
    title 前缀分布
    "prefix1": 30
    "prefix2": 20
    "prefix3": 50

类图

使用mermaid语法中的classDiagram标识出代码结构。

classDiagram
    class GetFileNames{
        - folder: str
        + get_filenames(folder: str): List[str]
    }
    class ExtractPrefix{
        + filenames: List[str]
        + extract_prefix(filenames: List[str]): List[str]
    }
    class RemoveDuplicates{
        + prefixes: List[str]
        + remove_duplicates(prefixes: List[str]): List[str]
    }
    class Main{
        + folder: str
        + main()
    }

    GetFileNames --> ExtractPrefix
    ExtractPrefix --> RemoveDuplicates
    Main --> GetFileNames
``