📅  最后修改于: 2023-12-03 15:34:03.096000             🧑  作者: Mango
os.walk
是Python中递归遍历文件夹的一个很有用的函数。本文将介绍如何使用os.walk
递归遍历文件夹。
os.walk
函数接收一个路径参数,返回一个遍历器对象。遍历器对象生成包含三个元素的元组:(文件夹路径, 文件夹中包含的子文件夹列表, 文件夹中包含的文件列表),这三个元素跟当前遍历的路径有关。
以下是使用os.walk
遍历目录的基本示例代码:
import os
for dirpath, dirnames, filenames in os.walk('/path/to/dir'):
print('Current Path:', dirpath)
print('Directories:', dirnames)
print('Files:', filenames)
以上代码遍历了/path/to/dir
目录及其所有子目录,并打印出每个子目录的路径,以及该目录中包含的子目录和文件列表。可以根据需要对获取到的子目录和文件列表做进一步的处理。
以下示例代码使用os.walk
遍历指定路径下的所有Python文件,并打印文件名和文件大小信息:
import os
def convert_bytes(num):
"""
this function will convert bytes to MB.... GB... etc
"""
for x in ['bytes', 'KB', 'MB', 'GB', 'TB']:
if num < 1024.0:
return "%3.1f %s" % (num, x)
num /= 1024.0
def get_file_info(file_path):
"""
this function will return file_size and file_name
"""
file_size = os.path.getsize(file_path)
file_name = os.path.basename(file_path)
return (file_name, file_size)
def main():
start_path = '/path/to/dir'
for dirpath, dirnames, filenames in os.walk(start_path):
for file in filenames:
if file.endswith('.py'):
file_path = os.path.join(dirpath, file)
file_name, file_size = get_file_info(file_path)
print("File name:", file_name)
print("File size:", convert_bytes(file_size))
if __name__ == '__main__':
main()
以上代码遍历了/path/to/dir
目录及其所有子目录,并打印出所有Python文件的文件名及文件大小信息。
os.walk
函数是Python中一个非常有用的函数,可以方便地递归遍历文件夹,获取文件夹内包含的子文件夹和文件信息。在处理大量文件或者需要批量处理文件时,使用os.walk
可以大大提高开发效率。