Python으로 cmd.exe 실행파일 만들기 with 연금복권
게시일 : 2017년 12월 01일
# Python
# cmd
cx_Freeze를 활용하여 Python cmd.exe 실행파일을 만든다. –
windows 10에서 실행오류가 해결된 최신버전을 활용한다. (5 버전은 문제가 있는 듯)
설치방법 : 파일을 다운받은 후 pip install cx_Freeze파일.whl
conda는 아직 python3.6버전을 지원하지 않는 듯 하다.
setup.py를 구성한 후 build를 하면 python을 설치하지 않아도 실행가능한 exe파일을 만들 수 있다.
setup.py
import sys
from cx_Freeze import setup, Executable
# packages : 실행파일에 포함된 모듈 ( 여기서는 2개 )
# excludes 'tkinter'은 기본 설정
# multiprocessing과 idna.idnadata는 윈도우에서 실행하기 위해 필요하다.
build_options = dict(
packages=['multiprocessing','idna.idnadata','bs4','requests',],
excludes= ['tkinter'] )
# 윈도우는 콘솔창에서 실행되도록 설정
base = 'Console' if sys.platform=='win32' else None
# setup 설정
setup(
name = "LottoFinder",
version = "1.0",
author = "YaHwang",
description = "find lotto number program",
options = {'build_exe': build_options},
# 실행할 py파일 지정, targetName : 생성될 exe파일 이름
executables = [Executable('lotto.py', base = base, targetName = 'lotto.exe')] )
exe파일 생성
같은 폴더 내 setup.py와 실행할 py파일이 위치해야 한다.
해당 폴더로 접근해 실행하면 build 폴더 안에 exe파일이 만들어진다.
python setup.py build
lotto.py
from bs4 import BeautifulSoup as bs
import requests
# 해당 페이지 회차번호 또는 추첨날짜를 추출하는 함수
def info(soup, tag):
return soup.select('h3.result_title')[0].find(tag).get_text()
baseUrl = "https://m.dhlottery.co.kr/gameResult.do?method=win520"
soup = bs(requests.get(baseUrl).content, 'html.parser')
recent = info(soup, 'strong')
print('연금복권 1등 당첨번호 찾기\n')
print('최근 %s' % info(soup, 'span'))
print('********%s회********\n' % recent)
while True:
while True:
try:
lotto_round = int(input('회차를 입력하세요 : '))
if lotto_round <0 or lotto_round> int(recent):
print('\n해당 회차가 존재하지 않습니다')
continue
break
except ValueError:
print("\n숫자만 입력해야 합니다")
lottoUrl = baseUrl + '&Round=' + str(lotto_round)
soup = bs(requests.get(lottoUrl).content, 'html.parser')
# 첫번째 번호
no1_1 = soup.find("ul", class_="no1_1").select("li")
no1_1 = [number.get_text(strip=True) for number in no1_1]
# 두번째 번호
no1_2 = soup.find("ul", class_="no1_2").select("li")
no1_2 = [number.get_text(strip=True) for number in no1_2]
print('\n%s회 당첨번호\n' % info(soup, 'strong'))
print(info(soup, 'span')+'\n')
print(' '.join(no1_1))
print(' '.join(no1_2))
a = input('\n다시 하려면 r 을 입력하세요 ')
if a in ['r', 'R', 'ㄱ', 'ㄲ']:
continue
else:
break
Link
: