📜  如何扫描没有点的文件夹内的文件 (1)

📅  最后修改于: 2023-12-03 14:53:06.440000             🧑  作者: Mango

如何扫描没有点的文件夹内的文件

如果你需要扫描一个没有点的文件夹下的所有文件,也就是没有扩展名的文件夹,你可以使用Python的os模块来实现。

使用Python的os模块扫描文件夹

Python的os模块提供了许多操作文件和目录的函数。其中,os.listdir()函数可以列出目录中的文件和文件夹。

以下是一个Python函数,它接受一个路径作为输入,扫描该路径下所有没有扩展名的文件夹,并返回所有文件的列表。

import os

def scan_dir(path):
    files = []
    for entry in os.listdir(path):
        full_path = os.path.join(path, entry)
        if os.path.isdir(full_path):
            if '.' not in entry:
                files += scan_dir(full_path)
        else:
            files.append(full_path)

    return files
函数说明:
  • os.listdir(path):该函数返回指定路径下的文件和文件夹列表。
  • os.path.join(path, entry):该函数将路径和文件名拼接为完整路径。
  • os.path.isdir(full_path):该函数用于判断给定路径是否为文件夹。
  • if '.' not in entry:该语句用于排除扩展名不为'.'的文件夹。
使用递归扫描目录

除了使用os模块外,递归扫描目录也是一种常见的方法来获取指定目录下的文件和文件夹。

以下是一个Python递归函数,它接受一个路径作为输入,扫描该路径下所有没有扩展名的文件夹,并返回所有文件的列表。

import os

def scan_dir_recur(path, files=[]):
    for entry in os.scandir(path):
        if entry.is_dir() and '.' not in entry.name:
            scan_dir_recur(entry.path, files)
        elif entry.is_file():
            files.append(entry.path)

    return files
函数说明:
  • os.scandir(path):该函数返回指定路径下的文件和文件夹列表。
  • entry.is_dir():该方法判断当前entry是否为一个目录。
  • entry.name:该属性返回entry的名称。
  • entry.path:该属性返回entry的完整路径。
  • if entry.is_dir() and '.' not in entry.name::该语句用于排除扩展名不为'.'的文件夹。
结论

无论是使用Python的os模块,还是使用递归扫描目录,都可以实现扫描一个没有点的文件夹下的所有文件。以上两种方法均返回给定路径下所有没有扩展名的文件夹的所有文件列表。