前言:
此刻大家对“python 树结构的遍历”大概比较注意,各位老铁们都想要知道一些“python 树结构的遍历”的相关内容。那么小编也在网上收集了一些对于“python 树结构的遍历””的相关知识,希望大家能喜欢,咱们快快来学习一下吧!假定你希望对某个文件夹中的所有文件改名,包括该文件夹中所有子文件夹中
的所有文件。也就是说,你希望遍历目录树,处理遇到的每个文件。写程序完成这
件事,可能需要一些技巧。好在,Python 提供了一个函数,替你处理这个过程。
请看 C:\delicious 文件夹及其内容,如图所示。
这里有一个例子程序,针对图的目录树,使用了 os.walk()函数:
import os
for folderName, subfolders, filenames in os.walk('C:\\delicious'):
print('The current folder is ' + folderName)
for subfolder in subfolders:
print('SUBFOLDER OF ' + folderName + ': ' + subfolder)
for filename in filenames:
print('FILE INSIDE ' + folderName + ': '+ filename)
print('')
os.walk()函数被传入一个字符串值,即一个文件夹的路径。你可以在一个 for
循环语句中使用 os.walk()函数,遍历目录树,就像使用 range()函数遍历一个范围的
数字一样。不像 range(),os.walk()在循环的每次迭代中,返回 3 个值:
1.当前文件夹名称的字符串。
2.当前文件夹中子文件夹的字符串的列表。
3.当前文件夹中文件的字符串的列表。
所谓当前文件夹,是指 for 循环当前迭代的文件夹。程序的当前工作目录,不
会因为 os.walk()而改变。
就像你可以在代码 for i in range(10):中选择变量名称 i 一样,你也可以选择前面
列出来的 3 个字的变量名称。我通常使用 foldername、subfolders 和 filenames。
运行该程序,它的输出如下:
The current folder is C:\delicious
SUBFOLDER OF C:\delicious: cats
SUBFOLDER OF C:\delicious: walnut
FILE INSIDE C:\delicious: spam.txt
The current folder is C:\delicious\cats
FILE INSIDE C:\delicious\cats: catnames.txt
FILE INSIDE C:\delicious\cats: zophie.jpg
The current folder is C:\delicious\walnut
SUBFOLDER OF C:\delicious\walnut: waffles
The current folder is C:\delicious\walnut\waffles
FILE INSIDE C:\delicious\walnut\waffles: butter.txt.
因为 os.walk()返回字符串的列表,保存在 subfolder 和 filename 变量中,所以你
可以在它们自己的 for 循环中使用这些列表。用你自己定制的代码,取代 print()函
数调用(或者如果不需要,就删除 for 循环)。
标签: #python 树结构的遍历