본문 바로가기

Python/Python31

파이썬 배포하기 (exe, 리소스폴더 포함 방법) PyInstaller 설치 우선 명령프롬프트에서 아래의 명령어를 통해 PyInstaller 패키지를 설치합니다. pip install pyinstaller 실행파일 만들기 Python 파일이 있는 폴더로 이동한 다음, 아래 명령어를 입력하면 해당 폴더에 실행파일이 만들어집니다. pyinstaller qtextbrowser_advanced.py 만들어진 폴더에서 dist로 이동해서, 한 번 더 들어가면 아래 그림과 같이 실행파일을 찾을 수 있습니다. 더블클릭해서 실행을 해보면 아래 그림과 같이 콘솔창이 함께 출력됩니다. 콘솔창 출력되지 않도록 하기 콘솔창이 출력되지 않게 하려면 아래와 같이 명령어에 '-w' 또는 '--windowed'를 추가해줍니다. pyinstaller -w qtextbrowser_ad.. 2022. 12. 27.
pip install "패키지" 오류 발생 시 대처 파이썬으로 GUI 프로그램을 작성하고 exe파일로 배포하려던 중에 pyinstaller 패키지가 설치 되지 않아서 자료를 찾아 보다가 해결 방법을 찾아서 내용을 공유합니다. 1. 설치 하려는 패키지가 아래와 같이 오류가 발생한 경우 현재 설치된 python 혹은 pip 의 버전이 높아서 기존 패키지가 재대로 설치가 안되는 경우가 대부분이다. 2. 검색을 통해 정상작동이 되는 버전을 확인 한 후 pip를 버전을 지정하여 재설치 함 현재 pip버전 확인 (cmd> pip --version) pip 확인 된 버전을 지정하여 재설치 (예제에서는 22.3.1버전에서 18.1로 재설치) cmd> python -m pip install --upgrade pip==18.1 3. 재설치된 pip 버전을 확인 하고 실패 .. 2022. 12. 26.
파이썬 - collections.Counter collections.Counter는 리스트나 문자열과 같은 자료형의 요소 중 값이 같은 요소가 몇 개인지를 확인할 때 사용하는 클래스이다. 문제 다음은 김소월의 시 '산유화'이다. 잠시 여유를 갖고 감상해 보자. 산에는 꽃 피네. 꽃이 피네. 갈 봄 여름없이 꽃이 피네. 산에 산에 피는 꽃은 저만치 혼자서 피어있네. 산에서 우는 새여 꽃이 좋아 산에서 사노라네. 산에는 꽃지네 꽃이 지네. 갈 봄 여름 없이 꽃이 지네. 이 시에서 가장 많이 사용한 단어와 그 개수를 구하려면 어떻게 해야 할까? 풀이 이 문제를 해결하려면 이 시를 단어별로 나누고 딕셔너리를 사용하여 각 개수를 0으로 초기화하고 나서 해당 단어가 반복될 때마다 1씩 증가하여 빈도수를 알아내는 방법을 써야 한다. 하지만, 여기서는 더 쉬운 방.. 2022. 12. 17.
파이썬 - collections.namedtuple 튜플(tuple)은 인덱스를 통해서만 데이터에 접근할 수 있지만 네임드 튜플(named tuple)은 인덱스뿐만 아니라 키(key)로도 데이터에 접근할 수 있는 자료형이다. collections.namedtuple()은 키값으로 데이터에 접근할 수 있는 튜플을 생성하는 함수이다. 문제 직원 주소록을 만들고자 다음과 같이 이름, 나이, 휴대전화로 구성된 직원 정보 데이터를 이용하려 한다. data = [ ('홍길동', 23, '01099990001'), ('김철수', 31, '01099991002'), ('이영희', 29, '01099992003'), ] 하지만, 리스트의 요소가 튜플이라 데이터에 접근하기가 쉽지 않다. 왜냐하면 데이터를 확인하려면 튜플 데이터의 인덱스 순서가 무엇을 뜻하는지 알아야 하기 .. 2022. 12. 17.
파이썬 - collections.deque collections.deque deque는 앞과 뒤에서 데이터를 처리할 수 있는 양방향 자료형으로, 스택(stack)처럼 써도 되고 큐(queue)처럼 써도 된다. collections.deque 모듈은 deque 자료형을 생성하는 모듈이다. deque는 '데크'라 읽는다. 문제 다음과 같이 시계방향으로 1~5가 적힌 다이얼이 있으며 현재 가리키는 눈금은 1이다. [1, 2, 3, 4, 5] 이 다이얼을 오른쪽으로 2칸 돌려 가리키는 눈금이 4가 되도록 하려면 어떻게 해야 할까? [4, 5, 1, 2, 3] 풀이 리스트를 n만큼 회전하는 문제는 알고리즘 문제에서 자주 등장한다. 파이썬에서는 collections.deque 모듈을 사용하면 간단하게 이 문제를 해결할 수 있다. >>> from collec.. 2022. 12. 17.
파이썬 - datetime 라이브러리 datetime.date(년, 월, 일) 날짜데이터를 생성. import datetime # 날짜1 데이터 출력 day1 = datetime.date(2020, 12, 10) print(day1) # 날짜2 데이터 출력 day2 = datetime.date(2022, 12, 17) print(day2) # day1에서 day2까지 날자계산(몇일이 지난것인지 계산) diff = day2-day1 print(diff) print(diff.days) # day2-day1 > 737 days, 0:00:00 같이 00일, 시:분:초를 표시 # diff.days > 737 과 같이 날짜값만 표시 실행결과 2020-12-10 2022-12-17 737 days, 0:00:00 737 datetime.datetime.. 2022. 12. 17.
파이썬 - 내장 함수 파이썬의 내장 함수는 모듈이나 패키지를 가져오지 않고 바로 사용할 수 있는 함수입니다. 다음은 자주 사용하는 내장 함수입니다. abs abs(x)는 어떤 숫자를 입력받았을 때, 그 숫자의 절댓값을 리턴하는 함수이다. >>> abs(3) 3 >>> abs(-3) 3 >>> abs(-1.2) 1.2 all all(x)는 반복 가능한(iterable) 데이터 x를 입력 값으로 받으며 이 x의 요소가 모두 참이면 True, 거짓이 하나라도 있으면 False를 리턴한다. 반복 가능한 데이터란 for 문에서 사용 가능한 자료형을 의미한다. 리스트, 튜플, 문자열, 딕셔너리, 집합 등이 있다. 다음 예를 보자. >>> all([1, 2, 3]) True 리스트 [1, 2, 3]은 모든 요소가 참이므로 True를 리턴.. 2022. 12. 15.
파이썬 - 클래스(class) 모듈 모듈 만들기 모듈에 대해 자세히 살펴보기 전에 간단한 모듈을 한번 만들어 보자. # mod1.py def add(a, b): return a + b def sub(a, b): return a-b 위와 같이 add와 sub 함수만 있는 파일 mod1.py를 만들고 C:\doit 디렉터리에 저장하자. 이 mod1.py 파일이 바로 모듈이다. 지금까지 에디터로 만든 파이썬 파일과 다르지 않다. 파이썬 확장자 .py로 만든 파이썬 파일은 모두 모듈이다. 모듈 불러오기 우리가 만든 mod1.py 파일, 즉 모듈을 파이썬에서 불러와 사용하려면 어떻게 해야 할까? 먼저 다음과 같이 명령 프롬프트 창을 열고 mod1.py를 저장한 디렉터리(이 책에서는 C:\doit)로 이동한 다음 대화형 인터프리터를 실행해 보자. C.. 2022. 12. 15.
파이썬 - 클래스(class) 기초 클래스는 왜 필요한가? 프로그래머들이 가장 많이 사용하는 프로그래밍 언어 중 하나인 C 언어에는 클래스가 없다. 이 말은 굳이 클래스가 없어도 프로그램을 충분히 만들 수 있다는 뜻이다. 파이썬으로 잘 만든 프로그램을 살펴보아도 클래스를 사용하지 않고 작성한 것들이 상당히 많다. 클래스는 지금까지 공부한 함수나 자료형처럼 프로그램 작성을 위해 꼭 필요한 요소는 아니다. 하지만 프로그램을 작성할 때 클래스를 적재적소에 사용하면 프로그래머가 얻을 수 있는 이익은 상당하다. 예제를 통해 한번 생각해 보자. 여러분 모두 계산기를 사용해 보았을 것이다. 계산기에 숫자 3을 입력하고 + 기호를 입력한 후 4를 입력하면 결괏값으로 7을 보여 준다. 다시 한 번 + 기호를 입력한 후 3을 입력하면 기존 결괏값 7에 3을.. 2022. 12. 15.
파이썬 - String endswith(), 어떤 문자열로 끝나는지 확인 endswith() endswith()를 이용하여 문자열이 특정 문자열로 끝이 나는지 확인할 수 있습니다. 1. endswith()로 문자열이 특정 문자열로 끝나는지 확인 예를 들어 다음과 같이 'Hello world, Python'가 Python 으로 끝나는지 확인할 수 있습니다. str = 'Hello world, Python' if str.endswith('Python'): print('It ends with Python') if not str.endswith('Hello'): print('It does not ends with Hello') Output: It ends with Python It does not end with Hello 만약 대소문자를 구분하지 않고 비교를 하고 싶다면 lower.. 2022. 12. 15.
파이썬 - String startswith(), 어떤 문자열로 시작하는지 확인 startwith() startswith()를 이용하여 문자열이 특정 문자열로 시작하는지 확인할 수 있습니다. 1. startswith()로 문자열이 특정 문자열로 시작하는지 확인 예를 들어 다음과 같이 'Hello world, Python!'가 Hello로 시작하는지 확인할 수 있습니다. str = 'Hello world, Python!' if str.startswith('Hello'): print('It starts with Hello') if not str.startswith('Python'): print('It does not start with Python') Output: It starts with Hello It does not start with Python 만약 대소문자를 구분하지 않고 .. 2022. 12. 15.
파이썬 문자열 자료형 - 연습문제 코딩시 자주 접하게 되는 문자열 자료형에 관한 연습문제를 통해 한번 더 학습하고 넘어 갑니다. 021 문자열 인덱싱 letters가 바인딩하는 문자열에서 첫번째와 세번째 문자를 출력하세요. >> letters = 'python' 실행 예 p t 정답확인 파이썬 문자열에서 한 글자를 가져오는 것을 인덱싱이라고 부릅니다. 파이썬 인덱싱은 0부터 시작합니다. lang = 'python' print(lang[0], lang[2]) 022 문자열 슬라이싱 자동차 번호가 다음과 같을 때 뒤에 4자리만 출력하세요. >> license_plate = "24가 2210" 실행 예: 2210 정답확인 문자열에서 여러 글자를 가져오는 것을 슬라이싱이라고 부릅니다. 음수 값은 문자열의 뒤에서부터 인덱싱 또는 슬라이싱함을 의미.. 2022. 12. 14.