강의자료/텍스트기반SW

파이썬으로 JSON 파일 다루기 및 실행파일 만들기

원당컴1 2023. 7. 13. 09:21

2023.07.04 - [강의자료/텍스트기반SW] - 파이썬으로 웹 크롤링 하고 바드에게 묻고 답하기

 

지난 시간에 저희 홈페이지 글을 크롤링 해서 내용을 찾아 바드에게 묻고 답하는 실습을 진행 해 보았는데요~

그렇다면 티스토리블로그 요약하는 프로그램이라면 URL 을 입력 받아 분석하는 프로그램을 만들면 되겠네요~

 

입력을 받아서 만약 exit 가 들어 왔다면 프로그램 종료하고 그렇지 않으면 분석 하도록 프로그램을 수정해 보도록 하겠습니다.

    while True:
        url_addr = input("분석할 URL 을 입력하세요.(종료시 exit) : ")
        if url_addr == 'exit': break
        # 웹 페이지를 가져온 뒤 BeautifulSoup 객체로 만듦
        response = requests.get(url_addr)
        soup = BeautifulSoup(response.content, 'html.parser')
        contents = soup.find('div', {'class': 'contents_style'})
    
        data=[]
        for ptag in contents.find_all('p'): #모든 p 태그를 찾아서 리스트로 만듬
            data.append(ptag.text)
    
        print(' '.join(data))
    
        #exit(0)
        questionText = '다음의 글을 읽고 한 줄로 정리해줘 '
        questionText += ' '.join(data)
    
        #바드 대답 듣기
        response = bardapi.core.Bard().get_answer(questionText)
        #print(response['content'],'\n')
        for i,choice in enumerate(response['choices']):
            print(f"Choice {i+1} : ", choice['content'][0],'\n\n')

테스트를 해 보면 제대로 분석을 하는 것을 알 수 있네요.^^

지난 시간에 만든 프로그램을 실행 파일로 만들어 볼께요~

 

일단 bard API Key를 파일에 저장해 놓고 사용하는 방식으로 프로그램을 구현해 보도록 하겠습니다.

파일은 Json 파일로 만들어서 읽고 쓰는 방식을 선택하겠습니다.

 

1. Python에서 JSON 파일 생성

- json,os.path 모듈 임포트

import json
import os.path

- 파일 존재 유무 확인 : 만약 파일이 없다면 API key를 입력받는 화면으로 이동하여 파일을 생성한다.

    if not os.path.isfile('config.json'):
        print('FileNotFoundError')
        exit(0)

일단 처음 프로그램을 실행하면 당연히 config.json 파일이 없어서 FileNotFoundError 메시지가 출력됩니다.

파일이 없다면 파일에 필요한 키값을 입력 받아서 생성하는 함수를 만들어서 파일을 생성 한 다음 JSON 파일을 읽어 오도록 하겠습니다.

def make_config_file():
    bard_config = dict()
    bard_config['key']=input('bard API 키를 입력하세요 : ').split()

    #json 파일로 저장
    with open('config.json', 'w', encoding='utf-8') as make_file:
        json.dump(bard_config, make_file, indent="\t")

make_config_file 함수는 키값을 입력 받아서 bard_config 라는 딕셔너리를 생성한 다음 이 딕셔너리를 json 파일로 생성하였습니다.

메인에서 파일이 없다면 위의 함수를 호출하여 파일을 생성후 파일을 읽어 보겠습니다.

2. Python에서 JSON 파일 읽기

    json_data = ''
    if not os.path.isfile('config.json'):
        make_config_file()

    with open('config.json', 'r') as f:
        json_data = json.load(f)


    print(json.dumps(json_data))

키를 입력 받은 후 키값을 출력해 보면 위와 같이 key값에 입력 받은 key 값이 조회 됩니다.

다시 실행 해 보면 키값을 입력 받는 메시지가 출력 되지 않습니다.

만약 key 값을 변경해야 한다면 config.json 파일을 삭제하면 다시 입력을 받는 메시지가 출력 되겠네요.

그렇다면 bard_api_key 에 파일에서 읽어온 이 키 값을 적용시켜 주면 될것 같습니다.

print(json_data['key'])

json 파일을 읽어 오면 json_data 는 딕셔너리 형태이므로 여기서 'key' 에 해당하는 값을 출력해 보면 키값만 출력 되는 것을 확인 할 수 있습니다.

bard_api_key = json_data['key'][0]

따라서 위와 같이 bard_api_key 에 json_data['key'] [0] 값을 적용시켜 주면 됩니다.(여기서 [0]을 선택한 이유는 key 에 해당하는 값이 리스트 형태로 저장되기 때문이다.)

이렇게 해서 실행을 해 보면 이전에 만들었던 프로그램이 정상으로 수행 되는 것을 확인할 수 있습니다.

 

3. 실행파일 만들기

마지막으로 이렇게 만든 프로그램을 어디서나 실행 할 수 있도록 샐행 파일로 만들어 보겠습니다.

1. PyInstaller 설치

pip install pyinstaller

2. 실행파일 만들기

파이썬 소스코드가 있는 디렉토리로 이동 후 다음과 같이 생성

pyinstaller -w -F main.py

3. 실행파일 생성위치

소스코드가 있는 폴더 -> dist -> main 폴더를 확인해 보면 main.exe 가 생겨 있는 것을 확인할 수 있다.

main.exe 를 실행해 보면 다음과 같이 실행 되는 것을 확인할 수 있습니다.

 

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기