This topic created in 2152 days ago, the information mentioned may be changed or developed.
先说重点:子目录也可能改名
需求:
搜索一个目录树,匹配规则,符合的改名(包括文件名或目录名)
规则匹配的对象是 Name,不是 Fullpath
开始想 scandir 并处理,但想想这样不对,改了目录名影响后续 scan
如果先搜索一遍,然后按 fullpath 排序,倒序,再逐个处理,不确定这个思路对不对?
Supplement 1 · Jul 15, 2020
暂时先用 scandir 弄个 fulllist,然后倒序排,基本文件排在目录前
这样就先处理文件,再到目录
试了几千个文件,应该没太大问题,后续再考虑软硬链问题
9 replies • 2020-07-15 01:31:16 +08:00
 |
|
1
k1z Jul 14, 2020 1
每次更新完一级重新匹配更新?
|
 |
|
2
zarte Jul 14, 2020 1
从叶子节点开始修改
|
 |
|
3
byzf Jul 14, 2020 1
遇文件改名, 遇目录递归再改名
|
 |
|
4
greatbody Jul 14, 2020 1
可以先将所有待改名的文件改名为 MD5 然后,根据 MD5 的 map,来改名。 优点:可以完成名字对调的改名。( a.txt b.txt 互换名字) 缺点:要改两次
|
 |
|
5
no1xsyzy Jul 14, 2020 1
手写 DFS 每一层先递归改子目录再改自己
|
 |
|
6
mythmgn Jul 14, 2020 1
这不是典型的深度优先吗?
|
 |
|
7
sc3263 Jul 14, 2020 2
os.walk 函数,topdown 参数设置为 False,就会从下往上遍历。 然后直接匹配文件 /目录名称,重命名就行了。
|
 |
|
8
Mutoo Jul 14, 2020 1
python 的 os.walk 的 depth-first search,按这个顺序入队,然后出栈,即倒序处理就可以了。你的思路没问题。
|
 |
|
9
imn1 Jul 15, 2020
@ sc3263 #7 好久没用 os.walk 了,现在基本只用 os.scandir
|