AI 학습데이터에 활용할 데이터셋을 불러오는 중에 아래와 같은 에러가 발생했습니다.
Error opening file
Unexpected UTF-8 BOM (decode using utf-8-sig): line 1 column 1 (char 0)
Make sure /Users/kaflix_wanya/Desktop/current/카스캐닝 데이터셋/parts_labeling/0831_1996개_jpg+json/100210979526_576120.json is a valid label file.'
문제는 annotating, labeling 데이터를 저장하고 있는 json 파일을 불러오면서 발생한 에러인데요.
이 많은 json파일의 인코딩을 어떻게 바꿀까 고민하다가 파이썬 코드로 해결하였습니다.
데이터셋 경로를 불러와서 -> 데이터셋 경로 내의 모든 json 파일을 읽어온 후 -> UTF-8로 다시 인코딩 -> 변경된 인코딩형식으로 json파일 저장
위 순서대로 작업한 후 다시 labelme에서 'open dir'을 통해 학습데이터 경로를 불러오니 오류없이 잘 작동합니다.
아래는 코드입니다.
import os
import json
def convert_json_encoding(folder_path):
# 주어진 폴더 내의 모든 파일에 대해 반복
for filename in os.listdir(folder_path):
filepath = os.path.join(folder_path, filename)
# 파일이 JSON 파일인지 확인
if filename.endswith('.json'):
# JSON 파일을 UTF-8 인코딩으로 읽어들임
with open(filepath, 'r', encoding='utf-8-sig') as file:
data = json.load(file)
# 같은 파일을 UTF-8 인코딩으로 다시 저장
with open(filepath, 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)
# 변경할 폴더 경로를 지정
folder_path = '/User/Dataset'
# 함수 호출
convert_json_encoding(folder_path)
'Daily Commit > Data Engineering' 카테고리의 다른 글
postgres 설치 (macOS, Docker, DBeaver) (0) | 2023.12.26 |
---|---|
[Dataframe] AttributeError: Can only use .dt accessor with datetimelike values (0) | 2023.11.17 |
웹사이트 데이터 입력 자동화, 세션처리, selenium, requests (0) | 2023.10.18 |
URL 호출을 통한 데이터 수집과 파이프라인 🚬 (0) | 2023.08.23 |