Ответ 1
Для такого шаблона поиска вы, возможно, сойдете с glob
.
from glob import glob
paths = glob('set01/*/*.png')
У меня есть структура dir, как показано ниже:
[[email protected]]$ 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 script, чтобы переименовать все * a.png на 01.png, * b.png на 02.png и т.д. Фрист, я думаю, мне нужно использовать что-то похожее на find . -name '*.png'
, а наиболее похожее на python - os.walk
. Тем не менее, в os.walk
мне нужно проверить каждый файл, если он png, тогда я свяжу его с ним root, как-то не так элегантно. Мне было интересно, есть ли лучший способ сделать это? Спасибо заранее.
Для такого шаблона поиска вы, возможно, сойдете с glob
.
from glob import glob
paths = glob('set01/*/*.png')
Вы можете использовать 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))
Откажитесь от gen_find от мистера Бизли.
В наши дни pathlib является удобным вариантом.