我有如下的目录结构:
[me@mypc]$ tree .
.
├── set01
│ ├── 01
│ │ ├── p1-001a.png
│ │ ├── p1-001b.png
│ │ ├── p1-001c.png
│ │ ├── p1-001d.png
│ │ └── p1-001e.png
│ ├── 02
│ │ ├── p2-001a.png
│ │ ├── p2-001b.png
│ │ ├── p2-001c.png
│ │ ├── p2-001d.png
│ │ └── p2-001e.png
我想写一个python脚本将所有* a.png重命名为01.png,* b.png重命名为02.png,依此类推。 Frist我想我必须使用与find . -name '*.png'
类似的东西,而我在python中发现的最相似的东西是os.walk
。但是,在os.walk
我必须检查每个文件,如果它是png,那么我将它与它的根连接,不知何故不那么优雅。我想知道是否有更好的方法来做到这一点?提前谢谢。
答案 0 :(得分:9)
对于类似的搜索模式,您可能会使用glob
。
from glob import glob
paths = glob('set01/*/*.png')
答案 1 :(得分:7)
您可以使用os.walk
遍历目录树。
也许这有用吗?
import os
for dpath, dnames, fnames in os.walk("."):
for i, fname in enumerate([os.path.join(dpath, fname) for fname in fnames]):
if fname.endswith(".png"):
#os.rename(fname, os.path.join(dpath, "%04d.png" % i))
print "mv %s %s" % (fname, os.path.join(dpath, "%04d.png" % i))
答案 2 :(得分:0)
查看Beazley先生的gen_find。
答案 3 :(得分:0)
目前,pathlib是一个方便的选择。