walk函数遍历文件夹中的文件?
在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()函数可能更加高效。同时,我们也需要注意避免遍历系统文件和文件夹,避免对系统造成不必要的影响。
