как сделать Mirrow Copy - PullRequest
       10

как сделать Mirrow Copy

0 голосов
/ 18 октября 2019

Я хочу изменить размер изображения и создать зеркальную копию.

Проблема заключается в том, что если я хочу скопировать из папки 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
...