Please enable Javascript to view the contents

让python去翻“垃圾”——遍历文件夹

 ·  ☕ 2 分钟

概述

处理电脑的日常事务,免不了要和文件夹(或者说工作目录)打交道
好在python提供的内置模块:os,提供许多便利的操作
今天学习了该模块内的 os.walk() 方法,用于遍历所选文件夹内所有子文件夹,
以及,每一个文件夹内所包含的文件。

函数长这样

1
os.walk(<目录>)
  • 返回值:该方法没有返回值
  • 读取目录下的每一个文件夹(包含它自己)
    产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】
    所以,可以用 for 循环,将元组解包,用于后续的遍历操作

实例

目标文件夹.png

代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#walk.py - 用于遍历文件夹和子文件夹
import os
def walk_floders(folder=str(os.getcwd())): #默认获取脚本所在文件夹,传入os.walk()
	for folderName, subfolders, filenames in os.walk(folder):
		print('当前目录:' + folderName)

		for subfolder in subfolders:
			print('子目录' + ' `-- ' + subfolder)

		for filename in filenames:
			print('当前目录包含文件 ' + os.path.basename(folderName) + ' <-- ' + filename)

		print('')

def main():
    print(os.getcwd())          #输出脚本目前工作的目录
	if len(sys.argv) == 2:      #如果指定了读取的目录,传入目标目录
		tar_floder = sys.argv[1]
		walk_floders(tar_floder) 
	else:                          #否则,获取脚本所在目录,遍历
		walk_floders(tar_floder)

if __name__ == '__main__':
	main()

运行

  • 我写了一个 run.bat 可以方便启动脚本
    将 run.bat 脚本放置到和要运行的脚本于同一目录下(要记得把放 run.bat 的脚本的文件夹,添加到系统环境变量中去)
    或者,如下,指定要运行脚本的放置路径
1
2
@python3.exe D:\py\Auto\walk.py %*
@pause
  • 我导入了 sys 模块,让脚本从命令行获取我选择遍历的目录
  • “win + R” 启动如下窗口,输入需要遍历的目录。
    运行.png

效果

运行结果.png

总结

有时候,我们要循环搜索某文件夹,及其子文件夹下的所有特定格式的文件(例如.txt, .jpg, .pdf 等)
os.walk()方法,配合 for 循环,正则表达式匹配,os, shutil等文件处理模块
可以轻松处理大量的
移动,查找,改名,删除,替换**等费时费力的工作了

人生苦短,我用python

分享

求余
作者
求余
python后端 自动化测试 网安爱好者