📜  在 python 中查找文件(1)

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

在 Python 中查找文件

在 Python 中查找文件是一项非常常见的任务。在许多情况下,我们需要查找一个文件并对其执行一些操作,例如读取文件内容、写入文件内容等。本文将介绍一些在 Python 中查找文件的基本方法。

1. 使用 os 模块

os 模块是 Python 自带的一个标准库,提供了许多操作系统相关的函数和变量。我们可以使用 os 模块来查找文件。

首先导入 os 模块:

import os
1.1 在当前目录查找文件

在当前目录下查找文件非常简单。我们只需要使用 os.listdir() 函数获取当前目录下的文件列表,然后遍历这个列表,判断每个文件是否是我们要查找的文件即可。

下面是一个例子,我们在当前目录下查找是否存在名为 test.txt 的文件:

import os

for file in os.listdir():
    if file == "test.txt":
        print(f"文件 {file} 存在于当前目录。")
        break
else:
    print("当前目录下不存在 test.txt 文件。")

上面的代码中,我们使用了 for ... else ... 语句,它的含义是,如果 for 循环遍历完列表后仍然没有找到我们要查找的文件,则执行 else 语句块中的代码。

1.2 在指定目录查找文件

在特定目录下查找文件稍微有点复杂。我们需要使用 os.path.join() 函数来获取要查找的目录的路径,然后使用 os.listdir() 函数获取该目录下的文件列表。

下面是一个例子,我们在 /tmp 目录下查找是否存在名为 test.txt 的文件:

import os

folder = "/tmp"

for file in os.listdir(folder):
    if file == "test.txt":
        fullpath = os.path.join(folder, file)
        print(f"文件 {fullpath} 存在于目录 {folder}。")
        break
else:
    print(f"目录 {folder} 下不存在 test.txt 文件。")
2. 使用 glob 模块

glob 模块是 Python 自带的一个标准库,可以根据特定的模式匹配文件路径,并返回匹配的文件列表。

首先导入 glob 模块:

import glob
2.1 在当前目录查找文件

在当前目录下查找文件非常简单。我们可以使用 glob.glob() 函数来获取当前目录下符合特定模式的文件列表。

下面是一个例子,我们查找当前目录下所有以 .txt 结尾的文件:

import glob

files = glob.glob("*.txt")

if len(files) > 0:
    print("找到以下 .txt 文件:")
    for file in files:
        print(file)
else:
    print("当前目录下不存在 .txt 文件。")
2.2 在指定目录查找文件

在指定目录下查找文件和在当前目录下查找类似。我们只需要将目录名和文件名拼接起来,并使用 glob.glob() 函数获取文件列表即可。

下面是一个例子,我们在 /tmp 目录下查找所有以 .log 结尾的文件:

import glob

folder = "/tmp"

files = glob.glob(folder + "/*.log")

if len(files) > 0:
    print(f"找到以下 .log 文件:")
    for file in files:
        print(file)
else:
    print(f"目录 {folder} 下不存在 .log 文件。")
3. 使用 fnmatch 模块

fnmatch 模块是 Python 自带的一个标准库,提供了一种 glob 模块的变体,可以更灵活地匹配文件名。

首先导入 fnmatch 模块:

import fnmatch
3.1 在当前目录查找文件

在当前目录下查找文件也非常简单。我们可以使用 fnmatch.filter() 函数来获取在当前目录下符合特定模式的文件列表。

下面是一个例子,我们查找当前目录下所有以 .txt 结尾的文件:

import fnmatch
import os

files = fnmatch.filter(os.listdir(), "*.txt")

if len(files) > 0:
    print("找到以下 .txt 文件:")
    for file in files:
        print(file)
else:
    print("当前目录下不存在 .txt 文件。")
3.2 在指定目录查找文件

在指定目录下查找文件和在当前目录下查找类似。我们只需要使用 os.listdir() 函数获取目录下的所有文件列表,然后使用 fnmatch.filter() 函数匹配文件名即可。

下面是一个例子,我们在 /tmp 目录下查找所有以 .log 结尾的文件:

import fnmatch
import os

folder = "/tmp"

files = fnmatch.filter(os.listdir(folder), "*.log")

if len(files) > 0:
    print(f"找到以下 .log 文件:")
    for file in files:
        fullpath = os.path.join(folder, file)
        print(fullpath)
else:
    print(f"目录 {folder} 下不存在 .log 文件。")
总结

以上就是在 Python 中查找文件的几种方法。如果您遇到了在 Python 中查找文件的问题,希望本文可以帮到您。