Я хочу изменить размер изображения и создать зеркальную копию.
Проблема заключается в том, что если я хочу скопировать из папки a в b.
Мне нужно создать каждую папку в папке a toизбегайте ошибок записи.
Поэтому я использую следующие функции: 'dir_all' и 'path_all' возвращают весь путь в.
Конечно, я могу скопировать напрямую, затем изменить свою картинку, но это меньшеэффективный.
Есть ли лучший способ сделать зеркальное копирование?
Есть ли быстрый способ объединить путь? использовать os.path.join не удобно
может быть, я должен использовать string.sub напрямую?
def path_all (search_path):
import os
for dirpath,dirnames,filenames in os.walk(search_path):
#print(dirpath)
for f in filenames:
yield f,os.path.join(dirpath,f)
def dir_all (search_path):
import os
for dirpath,dirnames,filenames in os.walk(search_path):
yield dirpath
def PIL_test():
from PIL import Image
import os
og_path = 'origin'
cp_path = 'copy'
search_path = og_path
g = path_all(search_path)
d = dir_all (search_path)
while True:
try:
dir_path = next(d)
dir_path = dir_path.split('origin', 1)[1]
print( 'folder',dir_path)
os.makedirs(cp_path+dir_path, exist_ok=True)
except:
print('Folder copy finish')
break
while True:
try:
filename,read_path = next(g)
save_path = read_path.split('origin', 1)[1]
save_path = cp_path + save_path
im = Image.open(read_path)
im = im.resize((width, height), Image.BILINEAR)
im.save(save_path)
except:
print('transfer finish')
break