📅  最后修改于: 2023-12-03 14:51:06.182000             🧑  作者: Mango
在 Python 中查找文件是一项非常常见的任务。在许多情况下,我们需要查找一个文件并对其执行一些操作,例如读取文件内容、写入文件内容等。本文将介绍一些在 Python 中查找文件的基本方法。
os
模块os
模块是 Python 自带的一个标准库,提供了许多操作系统相关的函数和变量。我们可以使用 os
模块来查找文件。
首先导入 os
模块:
import os
在当前目录下查找文件非常简单。我们只需要使用 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
语句块中的代码。
在特定目录下查找文件稍微有点复杂。我们需要使用 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 文件。")
glob
模块glob
模块是 Python 自带的一个标准库,可以根据特定的模式匹配文件路径,并返回匹配的文件列表。
首先导入 glob
模块:
import glob
在当前目录下查找文件非常简单。我们可以使用 glob.glob()
函数来获取当前目录下符合特定模式的文件列表。
下面是一个例子,我们查找当前目录下所有以 .txt
结尾的文件:
import glob
files = glob.glob("*.txt")
if len(files) > 0:
print("找到以下 .txt 文件:")
for file in files:
print(file)
else:
print("当前目录下不存在 .txt 文件。")
在指定目录下查找文件和在当前目录下查找类似。我们只需要将目录名和文件名拼接起来,并使用 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 文件。")
fnmatch
模块fnmatch
模块是 Python 自带的一个标准库,提供了一种 glob
模块的变体,可以更灵活地匹配文件名。
首先导入 fnmatch
模块:
import fnmatch
在当前目录下查找文件也非常简单。我们可以使用 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 文件。")
在指定目录下查找文件和在当前目录下查找类似。我们只需要使用 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 中查找文件的问题,希望本文可以帮到您。