20220418 월요일

  1. 오늘은 다같이 이미지에서 작업자를 선별하는 작업하는 작업을 했다.
    그제, 어제 학습셋 3개로 사람을 디텍팅해서 사람있음/없음/불확실함으로 나눠뒀었는데
    (3개 모두가 사람이 있다고 하면 있음/없다고 하면 없음/결과가 갈리면 불확실함)
    결국 전부를 살피자는 의견이 나와서 그렇게 했다. 아쉬웠다. 모두의 시간을 아끼고 싶었는데.

그래도 나눠둬서 도움이 됐다는 얘기를 들었다.

  1. 작업자 외의 다른 것들(사람이지만 작업자로 분류하지 않는 것)을 빼내는 작업도 필요하다는 걸 깨달아서 따로 빼내서 확인했다.

아래는 거기에 사용한 나약한 코드

import json
import glob
import shutil
import os

       
SRC_PATH = --------
DEST_PATH = --------

TARGET = 'SM'

def read_json():
    list_of_files = glob.glob(SRC_PATH + "*.json")
#     list_of_files = glob.glob("D:/files_lyw/test_files/*.json")
    for file_name in list_of_files:
        fin = open(file_name, "rt", encoding='UTF8')
        json_data = json.load(fin)
        count_of_labels = len(json_data["shapes"])
        count_of_target_object = 0
        if count_of_labels > 0:
            for index in range(count_of_labels):
                label_name = str(json_data["shapes"][index]["label"]).strip().split('_')
                object_name = label_name[0]
                if object_name == TARGET:
                    count_of_target_object += 1
                    break
        fin.close()
        if count_of_target_object >= 1:
            file_name_without_ext, ext = os.path.splitext(file_name)
            base_file_name = os.path.basename(file_name_without_ext)
            try:
                shutil.move(file_name, DEST_PATH + base_file_name +".json")
                shutil.move(file_name_without_ext + '.jpg', DEST_PATH + base_file_name + '.jpg')
            except:
                print(file_name + ' 경로 오류')
        
read_json()

이전에 만들었던 걸 좀 고쳐서 쓰는데,
파일을 옮기려고 하니 이상하게 오류가 나는 것이다.

처음에는 옮긴 걸 또 옮기려고 하니까 나는건가? 하고 생각했는데
그게 아니었다. (코드 변경전에는 그것도 맞았을 것이다)

try, except를 빼서 오류 메시지를 보니
permissionError가 뜨더라.

왜지, 뭐지 하면서 헤매다가 찾아보곤 아하, 했다.

https://blog.naver.com/PostView.naver?blogId=kellygirl4028&logNo=222545821922&parentCategoryNo=&categoryNo=34&viewDate=&isShowPopularPosts=true&from=search

옮기기 전에 파일을 안 닫아줘서 그랬던 것.


코드를 공개적인 곳에 올리려하니 함수를 나누지 않은게 눈에 팍 띈다.
코드를 좀 더 깔끔하게 쓰는 습관을 들이려면 먼저 마음의 여유가 필요한 걸지도 모르겠다.

좋은 웹페이지 즐겨찾기