Найти - Пользователи
Полная версия: Сохранение файлов в новой директории с сохранением пути поддиректорий
Начало » Python для новичков » Сохранение файлов в новой директории с сохранением пути поддиректорий
1
Andrey VI
Есть простой скрипт:
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. Как это можно сделать?
py.user.next
>>> 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 хранит разделитель путей
Andrey VI
Моя ошибка… Я неудачно сформулировал задачу.
Названия директорий x и y - переменные. Если более конкретно, то x принимает значения 1…m, а y - -n…n. Т. е., например, если мы берем цветное изображение из папки images\5\25\*.png, то серое изображение нужно сохранить в папку images_2\5\25\*.png.
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 что-то со списками не работает
doza_and
Есть еще один путь - использовать makedirs
Andrey VI
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 вообще не знаком
doza_and
import os

def ForcedOpen(filename,openkeys):
"""открываем файл и создаем директории если надо"""
dirnm=os.path.dirname(filename)
if not os.path.exists(dirnm):
os.makedirs(dirnm)
return open(filename,openkeys)
py.user.next
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
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB