Сортировать изображения (используя json) в папки с python - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть большой набор изображений (в одной папке), и я пометил их с помощью программного обеспечения. Вывод представляет собой файл JSON, который содержит метки. Я хочу написать скрипт, который сможет создавать папки и перемещать изображения в соответствии с меткой описания в файле json. Пока у меня есть python для доступа к файлу json и отображения требуемой метки.

КОД1:

import json
import os
with open('filedirectory.json') as json_data:
    data = json.load(json_data)
for i, r in enumerate(data):
     if r['label'] != 'tag' 
            print(i)
            print(r['label']['tag1'])

КОД2:

import json
import os
import shutil
path = "filedirectory//samplefolder"
try:  
    os.mkdir(path)
except OSError:  
    print ("Creation of the directory %s failed" % path)
else:  
    print ("Successfully created the directory %s " % path)
source = "filedirectory//images"
dest1 = "filedrectory//tag1"
dest1 = "filedrectory//tag2"
files = os.listdir(source)
with open('filedirectory.json') as json_data:
    data = json.load(json_data)
    for i, r in enumerate(data):
        if r['label']['tag1'] = 'tag1' 
            shutil.move(f, tag1)

Первый код отображает вывод метки. Второй код - это то, что я хочу попробовать, но не уверен, сработает ли это. Любая помощь?

1 Ответ

0 голосов
/ 03 апреля 2019

Я вижу следующие проблемы с CODE2:

это: if r['label']['tag1'] = 'tag1' должно быть: if r['label']['tag1'] == 'tag1'

в строке: shutil.move(f, tag1) вы используете f и tag1, но tag1 не определено ранее и f не определено ранее.

Я не знаю, есть ли другие проблемы, но если вы опасаетесь, что это испортит ваши файлы, я предлагаю вам создать функцию (в начале CODE2) следующим образом:

def mock_move(a,b):
    print('moving from:',a,'to',b)

Затем, заменив shutil.move на mock_move и запустив свой CODE2, вы сможете проверить, делает ли он то, что должен, без каких-либо движений ваших файлов. Убедившись, что он работает должным образом, вы можете заменить mock_move на shutil.move и запустить CODE2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...