콘솔워크

pyqt5 저장 파일 json형식으로 관리 본문

프로그래밍/python

pyqt5 저장 파일 json형식으로 관리

이휘재123 2023. 2. 1. 19:43
반응형
import os
from enum import Enum
from datetime import datetime
import json
from mimetypes import MimeTypes

COMPANY_NAME = "회사이름"
PROGRAM_ID = "프로그램이름"
APP_DATA_PATH = os.path.join(os.getenv("APPDATA"), COMPANY_NAME)

PROGRAM_PATH = os.path.join(APP_DATA_PATH, PROGRAM_ID)

if os.path.isdir(APP_DATA_PATH) == False:
    os.mkdir(APP_DATA_PATH)

if os.path.isdir(PROGRAM_PATH) == False:
    os.mkdir(PROGRAM_PATH)

USER_SAVE_PATH = os.path.join(PROGRAM_PATH, f"{PROGRAM_ID}.txt")


def get_save_data():
    saved_data = None
    if os.path.isfile(USER_SAVE_PATH):
        with open(USER_SAVE_PATH, "r", encoding="utf-8") as f:
            saved_data = json.loads(f.read())
    return saved_data


def write_save_data(dict_save: dict):

    if os.path.isfile(USER_SAVE_PATH):
        os.remove(USER_SAVE_PATH)
        with open(USER_SAVE_PATH, "w", encoding="utf-8") as f:
            f.write(json.dumps((dict_save)))
            f.close()
    else:
        with open(USER_SAVE_PATH, "w", encoding="utf-8") as f:
            f.write(json.dumps((dict_save)))
            f.close()

    return dict_save


class SaveFile(Enum):
    TEST_SAVE = "test_save"


# 저장데이터 없는 경우 초기화
if not get_save_data():
    write_save_data(
        {
            SaveFile.TEST_SAVE.value: "",
        }
    )




LOG_FOLDER_NAME = "log"
LOG_FOLDER_PATH = os.path.join(PROGRAM_PATH, LOG_FOLDER_NAME)
if not os.path.isdir(LOG_FOLDER_PATH):
    os.mkdir(LOG_FOLDER_PATH)

1. xxx.py 형식으로 해당 코드를 작성한다.

 

2. 저장 파일을 저장, 불러오기를 할 곳에서 해당 파일을 import 해준다.

(from xxx import *)

 

3. 초기화 단계에서 get_save_data() 해당 함수를 변수에 저장해준다.

(self.saved_data = get_save_data())

 

4. 변수 안에 저장된 데이터를 불러와서 사용한다.

(self.saved_data[SaveFile.TEST_SAVE.value])

 

5. 데이터를 저장할 때에는 dict 형태의 데이터를 write_save_data(함수에 넣어준다.

dict_save = {
            SaveFile.TEST_SAVE.value: '저장단어'
        }

(write_save_data(dict_save))

 

반응형