Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 23, 2011 23:11:38

Andrey VI
От:
Зарегистрирован: 2011-04-23
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранение файлов в новой директории с сохранением пути поддиректорий

Есть простой скрипт:

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')
Например, путь к исходным файлам images\x\y\*.png, где x и y - названия поддиректорий, которые нужно сохранить, но при этом выходные файлы записать в директорию images_2\x\y\*.png. Как это можно сделать?



Офлайн

#2 Апрель 25, 2011 03:58:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9998
Репутация: +  857  -
Профиль   Отправить e-mail  

Сохранение файлов в новой директории с сохранением пути поддиректорий

>>> 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'
>>>
os.path.sep хранит разделитель путей



Отредактировано (Апрель 25, 2011 04:05:58)

Офлайн

#3 Апрель 25, 2011 08:50:09

Andrey VI
От:
Зарегистрирован: 2011-04-23
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранение файлов в новой директории с сохранением пути поддиректорий

Моя ошибка… Я неудачно сформулировал задачу.
Названия директорий x и y - переменные. Если более конкретно, то x принимает значения 1…m, а y - -n…n. Т. е., например, если мы берем цветное изображение из папки images\5\25\*.png, то серое изображение нужно сохранить в папку images_2\5\25\*.png.



Офлайн

#4 Апрель 26, 2011 05:29:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9998
Репутация: +  857  -
Профиль   Отправить e-mail  

Сохранение файлов в новой директории с сохранением пути поддиректорий

>>> 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'
>>>
os.path.join что-то со списками не работает



Офлайн

#5 Апрель 26, 2011 07:57:29

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Сохранение файлов в новой директории с сохранением пути поддиректорий

Есть еще один путь - использовать makedirs



Офлайн

#6 Апрель 26, 2011 08:42:29

Andrey VI
От:
Зарегистрирован: 2011-04-23
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранение файлов в новой директории с сохранением пути поддиректорий

py.user.next
>>> 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'
>>>
os.path.join что-то со списками не работает
Еще бы понять, как это встроить в мой скрипт… Я с Python вообще не знаком



Офлайн

#7 Апрель 26, 2011 10:02:25

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Сохранение файлов в новой директории с сохранением пути поддиректорий

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)

Офлайн

#8 Апрель 27, 2011 08:12:17

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9998
Репутация: +  857  -
Профиль   Отправить e-mail  

Сохранение файлов в новой директории с сохранением пути поддиректорий

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
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version