如何使用 Python 查找文件

在处理大量数据和文件时,了解如何使用 Python 查找和处理文件是非常有用的。Python 提供了许多内置的模块和函数,可以轻松地在计算机上查找特定类型的文件。本文将介绍几种常见的方法和技巧。

  1. 使用 os 模块

os 模块提供了很多与操作系统交互的函数,其中包括查找文件的功能。使用 os 模块中的 listdir() 函数可以列出目录中的所有文件和子目录。例如,以下代码可以列出当前目录中所有的文件和子目录:

import os

content = os.listdir('.')
print(content)

使用 os 模块中的 isfile() 或 isdir() 函数可以检查一个文件是否为文件或目录。例如,以下代码可以列出当前目录中所有的文件:

import os

content = os.listdir('.')
files = []

for item in content:
    if os.path.isfile(item):
        files.append(item)

print(files)

使用 os 模块中的 walk() 函数可以递归地遍历目录和子目录中的所有文件和目录。例如,以下代码可以列出 C 盘下的所有文件和目录:

import os

for root, dirs, files in os.walk('C:\\'):
    for file in files:
        print(os.path.join(root, file))
  1. 使用 glob 模块

glob 模块提供了一种基于模式匹配的方法来查找文件。它可以使用通配符来匹配文件名。例如,以下代码可以列出当前目录中以 .py 结尾的所有文件:

import glob

files = glob.glob('*.py')
print(files)

可以使用 os.path 模块中的基本函数对文件进行操作。例如,以下代码将列出当前目录中所有文件的文件名和大小:

import glob
import os

for file in glob.glob('*.*'):
    name, ext = os.path.splitext(file)
    size = os.path.getsize(file)
    print(name, ext, size)
  1. 使用 pathlib 模块

pathlib 模块提供了一种面向对象的方法来处理文件路径。它使得操作文件路径变得简单和直观。例如,以下代码可以列出当前目录中所有文件的文件名和大小:

from pathlib import Path

for file in Path('.').iterdir():
    if file.is_file():
        print(file.name, file.stat().st_size)

可以使用 glob() 函数来匹配文件名。例如,以下代码可以列出当前目录中以 .txt 后缀的所有文件:

from pathlib import Path

for file in Path('.').glob('*.txt'):
    print(file.name)

注意事项和技巧:

  1. 在使用 os 模块时,需要注意 Python 的路径分隔符是斜杆 (/) 而不是反斜杠 ()。如果需要使用反斜杠,请使用两个反斜杠 (\)。
  2. 在使用 glob 模块时,需要注意通配符和文件名的区分大小写。例如,*.txt 只匹配以 .txt 结尾的文件名,而不匹配以 .TXT 结尾的文件名。
  3. 在使用 pathlib 模块时,需要注意使用正确的方法。方法和属性名与 os 和 glob 模块有所不同。
  4. 在处理大量文件时,应该使用代码来过滤和处理文件,而不是手动查找文件。这可以提高效率和减少错误。