首页 > 编程语言 > 详细

Code Snippet : Python 递归遍历文件夹,并对文件夹中的文件做相应的操作

时间:2020-03-22 19:20:16      阅读:55      评论:0      收藏:0      [点我收藏+]

最近偶然想到在安卓手机上跑python程序,用于筛选删除越来越多的手机微信图片。

刚好发现的确有一个 QPython 的项目可以实现这个功能,于是着手写py脚本。

写这个脚本有一个核心的程序,就是遍历整个 Tencent/MicroMsg/<用户id号的32位加密值>image2 路径,都是像如下这种目录分布的,手工找起来非常麻烦

 技术分享图片

 

这就需要用递归功能来让脚本帮助我们处理这些琐事。

之前已经推荐过一篇关于递归的文章《神奇的递归》,本文只是对上一篇文章的学以致用。

废话不多说,代码片段如下

 1 import os,sys
 2 
 3 def search(path):
 4     with open(rename_png.log,mode=a+) as f:
 5         try:
 6             for p in os.listdir(path):
 7                 pp = os.path.join(path,p)
 8                 if(os.path.isdir(pp)):
 9                     search(pp)
10                 else:
11                     solve(pp)
12                     f.write(pp+\n)
13                     if(pp.endswith(newpng)):
14                         os.rename(pp,pp[:-3]+.png)
15                     if(pp.endswith(new.jpg)):
16                         os.rename(pp,pp.split(.)[0]+.png)
17                     # if(pp.endswith(‘.png‘) or pp.endswith(‘.jpg‘)):
18                     #     pass
19                     # else:
20                     #     os.rename(pp,pp+‘new.jpg‘)
21         except PermissionError:
22             print(Path:{} have No Permiss.format(path))
23             # pass
24 
25 def solve(pp):
26     print(pp)
27     pass
28 
29 if __name__ == __main__:
30     if len(sys.argv) > 1:
31         search(sys.argv[1])
32     else:     
33         search(image2/)

上述代码的意思是遍历文件夹(line6),列取文件夹中的文件,若仍然是文件夹,则递归子文件夹(line9),若是文件,则处理文件(line11)

如此,假如以后需要递归文件夹,就可以复制上述代码段,只需要定制solve的内容按需要处理文件即可。

这里需要补充几个 snippets ,例如:

os.listdir(path) # 罗列path路径下的文件,同cmd中的dir,和terminal中的ls,list

os.path.join(path,p) # 拼接路径
os.path.split(path) # 分隔文件的路径和名称
os.path.isdir(pp) # 检测pp是否是文件夹,true; 若是文件,false os.getcwd() # get current work dir 获取当前路径名称 os.path.getsize(pathfile) # 获取文件的大小 Byte

os.rename(a,b)
# 重命名a为b

 

Code Snippet : Python 递归遍历文件夹,并对文件夹中的文件做相应的操作

原文:https://www.cnblogs.com/yqmcu/p/12547409.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!