欢迎访问宙启技术站
智能推送

walk函数遍历文件夹中的文件?

发布时间:2023-05-31 16:29:22

在Python中,walk()函数可以帮助我们遍历一个文件夹中的所有文件。walk()函数是一个生成器,它会遍历根文件夹以及其子文件夹中的所有文件,返回一个包含三个元素的元组:当前文件夹的路径、当前文件夹中所有子文件夹的名称和当前文件夹中所有文件的名称。利用这些元素,我们可以轻松地遍历整个文件夹。

示例代码:

import os

def traverse_folder(path):
    for root, dirs, files in os.walk(path):
        print("当前路径:", root)
        print("子文件夹:", dirs)
        print("所有文件:", files)
        
traverse_folder('/Users/UserName/Documents')

以上代码展示了如何使用walk()函数来遍历一个文件夹中的所有文件。在代码中,我们定义了一个traverse_folder()函数,并通过传递文件夹路径作为参数来调用该函数。然后,我们使用os.walk()函数遍历了给定文件夹路径中的所有文件和子文件夹。最后,我们打印了当前路径、子文件夹、所有文件的名称,从而确保我们正确地遍历了整个文件夹。

这里还有几个小技巧可以提高walk()函数的使用效率:

1. 可以使用os.path.join()函数来拼接当前路径和子文件夹/文件的名称。这可以确保程序在任何操作系统上都能正常运行。

2. 可以使用正则表达式来筛选需要遍历的文件。如下例代码:

import os
import re

def traverse_folder(path):
    pattern = re.compile(r"\.txt$")
    for root, dirs, files in os.walk(path):
        for file in files:
            if pattern.search(file):
                file_path = os.path.join(root, file)
                print(file_path)
                
traverse_folder('/Users/UserName/Documents')

以上代码展示了如何仅遍历给定文件夹中的txt文件。我们定义了一个正则表达式,来查找文件名中以".txt"结尾的文件。然后我们在遍历文件夹中的每个文件时,检查文件名是否满足我们的正则表达式。如果文件名匹配上了,就打印文件路径。

3. 可以使用os.stat()函数获取文件的详细信息,比如文件大小、创建时间、修改时间等。

import os

def traverse_folder(path):
    for root, dirs, files in os.walk(path):
        for file in files:
            file_path = os.path.join(root, file)
            file_size = os.stat(file_path).st_size
            print("文件名:", file)
            print("文件大小:", file_size, "bytes")
            
traverse_folder('/Users/UserName/Documents')

以上代码展示了如何获取文件的大小。我们使用os.stat()函数获取文件的详细信息,并使用.st_size属性来获取文件的大小。然后我们打印文件名和文件大小。

在实际使用中,我们需要根据具体需求来选择适当的遍历方法。walk()函数可以帮助我们遍历整个文件夹,但如果我们只需要获取文件的基本信息,使用os.listdir()函数可能更加高效。同时,我们也需要注意避免遍历系统文件和文件夹,避免对系统造成不必要的影响。