Форум сайта python.su
Есть простой скрипт:
import Image, ImageOps
import glob, os
for infile in glob.glob("images\*\*\*.png"):
file, ext = os.path.splitext(infile)
im = Image.open(infile)
gray = ImageOps.grayscale(im)
gray.save(file + '.png')
Офлайн
>>> p = r'images\x\y\*.png'
>>> p
'images\\x\\y\\*.png'
>>> pl = p.split('\\', 1)
>>> pl
['images', 'x\\y\\*.png']
>>> os.path.join(pl[0] + '_2', pl[1])
'images_2/x\\y\\*.png'
>>>
Отредактировано (Апрель 25, 2011 04:05:58)
Офлайн
Моя ошибка… Я неудачно сформулировал задачу.
Названия директорий x и y - переменные. Если более конкретно, то x принимает значения 1…m, а y - -n…n. Т. е., например, если мы берем цветное изображение из папки images\5\25\*.png, то серое изображение нужно сохранить в папку images_2\5\25\*.png.
Офлайн
>>> p = r'images\x\y\*.png'
>>> pl = p.split('\\')
>>> pl
['images', 'x', 'y', '*.png']
>>> np = '\\'.join((pl[0] + '_2', '\\'.join(pl[1:])))
>>> np
'images_2\\x\\y\\*.png'
>>>
Офлайн
Есть еще один путь - использовать makedirs
Офлайн
py.user.nextЕще бы понять, как это встроить в мой скрипт… Я с Python вообще не знакомos.path.join что-то со списками не работает>>> p = r'images\x\y\*.png'
>>> pl = p.split('\\')
>>> pl
['images', 'x', 'y', '*.png']
>>> np = '\\'.join((pl[0] + '_2', '\\'.join(pl[1:])))
>>> np
'images_2\\x\\y\\*.png'
>>>
Офлайн
import os
def ForcedOpen(filename,openkeys):
"""открываем файл и создаем директории если надо"""
dirnm=os.path.dirname(filename)
if not os.path.exists(dirnm):
os.makedirs(dirnm)
return open(filename,openkeys)
Отредактировано (Апрель 26, 2011 10:09:31)
Офлайн
def get_new_path(path, suff, sep='\\'):
pl = path.split(sep)
np = sep.join((pl[0] + suff, sep.join(pl[1:])))
return np
>>> def get_new_path(path, suff, sep='\\'):
... pl = path.split(sep)
... np = sep.join((pl[0] + suff, sep.join(pl[1:])))
... return np
...
>>> path = r'images\x\y\1.png'
>>> newpath = get_new_path(path, '_2')
>>> print(newpath)
images_2\x\y\1.png
>>>
Офлайн