반응형

파이썬 실전 14

파이썬 실전) 자막 이름 변경 프로그램(Subtitles Changer) 2. GUI화

이번 글에서는 이전에 만들었던 메커니즘을 이용하여 프로그램을 GUI로 만드는 방법에 대해서 써보겠습니다. 0. 이전 문제의 해답 이전 글에서 여러 파일을 한번에 바꾸는 방법에 대해서 상황을 부여했습니다. 여러 파일을 동시에 바꾸기 위해서는 for문이나 while문등의 반복문으로 파일 이름을 바꾸는 코드를 반복해서 실행하면 되겠습니다. 이때 movies와 subtitles의 인덱스 번호를 반복문의 특성에 맞게 바꿔주셔야 합니다. (1) for문 for i in range(len(movies)): os.rename(directory + "/" + subtitles[i], directory + "/" + movies[i][:-4] + subtitles[i][-4:]) (2) while문 count = 0 wh..

파이썬 실전) 자막 이름 변경 프로그램(Subtitles Changer) 1. 파일 이름 변경

이번 글에서는 파이썬의 os 라이브러리를 이용하여 자막 이름을 영상의 이름으로 바꾸는 방법에 대해서 써보겠습니다. 1. 코드 우선 파일에 접근해야 하므로 os 라이브러리를 import 해 줍니다. import os 이제 폴더에 접근할 예정입니다. 폴더에는 Python 파일과 테스트를 위해 만든 Movie.avi(영상), subtitle.smi(자막)이 있습니다. 이제 파일이 존재하는 폴더의 경로를 찾아야 합니다. 실제로 프로그램을 만들게 되면 평소 다른 프로그램에서 사용되는 Window의 폴더 선택 창을 통해서 폴더 경로를 찾을 수 있지만, 이번 시간에는 Python 파일과 같이 있다는 전제로 진행하겠습니다. Python 파일의 경로를 찾는 코드는 os 모듈의 getcwd()라는 함수입니다. direct..

파이썬 실전) 자막 이름 변경 프로그램(Subtitles Changer) 0. 설계

1. 현상 파악 해외 드라마나 애니메이션을 다운로드하여서 보려고 하면 자막이 필수입니다. 이때 자막이 동봉되어 있지 않거나, 자막이 없는 영상을 받았을 경우 자막을 따로 다운로드하게 됩니다. 이렇게 자막과 영상을 받은 곳이 다르면 높은 확률로 자막과 영상의 이름이 달라서 동영상 플레이어가 자동으로 자막을 인식하지 못하게 됩니다. 그럴 때 자막의 이름을 영상과 똑같이 일치시켜주면 자동으로 자막이 포함되어 영상이 송출됩니다. 영화는 1개 또는 2개의 영상이므로 자막의 이름을 손수 바꿔줄 수 있지만, 예를들어 왕좌의 게임의 경우 평균 10화씩 8 시즌이 방영되었기에 총 작업해야 하는 자막의 숫자는 80개입니다. 이것을 손으로 하나하나 바꿔주는 것은 무리이기에 이것을 한 번에 해결해 주는 프로그램이 필요합니다...

파이썬 실전) 브루트 포스 프로그램 2. 멀티스레딩을 이용한 브루트 포스

이번 강의는 파이썬의 멀티스레딩을 이용하여 브루트 포스를 하는 방법에 대해서 알려드리려고 합니다. 1. 멀티스레딩 기본적으로 프로그램은 한 번에 하나의 명령을 수행합니다. 그 속도가 매우 빠르기 때문에 일반적인 상황에서는 문제가 되지 않습니다만, 브루트 포스처럼 엄청난 양의 연산을 해야 되는 경우에는 하나씩 처리하는데 시간이 많이 걸립니다. 그렇기에 나온 것이 바로 멀티스레딩입니다. 예를 들어 자동차를 만든다고 가정할 때, 한 명이 하나의 자동차를 만드는 것은 매우 힘든 일입니다. 하지만 100명이 붙어서 만든다면 그 힘은 현저히 줄어들 것입니다. 이러한 원리를 컴퓨터에서도 적용할 수 있습니다. 먼저 멀티스레딩은 두 가지로 나누어집니다. 하나는 일시적 멀티스레딩이며, 나머지는 동시 멀티스레딩입니다. 일시..

파이썬 실전) 로또 번호 생성기 完. 테스트

저희는 7개의 강의를 통해 로또 번호 생성기 프로그램을 만들었습니다. 마무리로 해당 프로그램이 진짜로 가능성이 있는지 재미 삼아 테스트해 보았습니다. 1. 번호 생성 시도 횟수가 많으면 당첨될 확률이 많아지는것은 당연한 것이기 때문에, 시도 횟수는 평소에 구매하는 10개로 정했습니다. 조건은 고정수 없음, 연속수 허용, 이전 회차와 중복은 2개까지 허용입니다. 위 사진은 954회 당첨번호가 나오기 전에 만들어진 사진입니다. 이제 만들어진 번호를 저장하여 로또를 구매하였다고 가정하겠습니다. 이제 이렇게 만들어진 번호를 다음 회차에 확인해 보았습니다. 2. 번호 확인 로또 번호 발표 이후, 번호를 확인해 보았습니다. 번호를 확인한 결과, 무려 로또 4등에 당첨되었습니다. 실제로 구매했다면 10회의 가격인 1..

파이썬 실전) 브루트 포스 프로그램 1. for문을 이용한 브루트 포스

이번 강의는 브루트 포스의 방법으로써, 파이썬에서 기본 지원하는 for문을 이용하여 브루트 포스를 해보려고 합니다. 1. 기초 파이썬의 for문에서 브루트 포스를 하려면 모든 경우의 수를 만들 수 있어야 합니다. 이러한 경우의 수를 만들어 주는 모듈이 바로 intertools 모듈의 product라는 함수입니다. from itertools import product itertools 모듈에는 여러 조합을 만드는 방법이 있지만, 브루트 포스 프로그램에서는 product를 사용해서 만들 예정입니다. product 모듈의 사용 방법은 다음과 같습니다. list = product(A, repeat=B) A는 조합을 만들 내용을 입력하며, B는 자릿수를 입력합니다. product는 기본적으로 여러 리스트들의 조합..

파이썬 실전) 브루트 포스 프로그램 0. 브루트 포스의 뜻

이번시간부터는 파이썬에서 브루트 포스 알고리즘을 이용하는 방법에 대해서 글을 써보려고 합니다.1. 브루트 포스? 과거 2G폰을 사용했던 사용자라면 위와 같은 화면이 기억나실겁니다. 그때 비밀번호는 4자리의 암호였으며, 친구 휴대폰의 비밀번호를 풀기 위해서 0000부터 9999까지의 경우의 수를 한번씩 입력해서 비밀번호를 풀려고 했던 기억이 있습니다. 또는 친구의 버튼식이나 다이얼식 자물쇠를 사용하는 사물함을 열기 위해 가능한 경우의 수를 하나씩 전부 대입해서 자물쇠를 풀었던 기억이 있습니다. 이처럼 그 어떤 비밀번호라도 모든 경우의 수를 전부 대입하게 되면 반드시 비밀번호는 풀립니다. 이러한 방식을 브루트 포스 공격(Brute - 난폭한, Force - 힘 / 난폭하게 힘으로 때려맞추는 공격기법)이라고 ..

파이썬 실전) 로또 번호 생성기 7. 생성 번호 저장

이번 강의는 로또 번호 생성기의 마지막인 만들어진 번호를 저장하는 기능을 만들어 보겠습니다. 결과 프로그램은 exe파일로 만들어서 첨부하도록 하겠습니다. drive.google.com/file/d/1uJhHX3ofbniPuQEOZhjwe6ibwc7aNm7G/view?usp=sharing lotto_number_generator.exe drive.google.com 1. 코드 이번 강의는 딱히 설명할 부분이 많지 않기 때문에 바로 코드부터 보도록 하겠습니다. 우선 저장을 담당할 버튼을 만들어 줍니다. self.save_button = wx.Button(panel, id=12, label="저장", pos=(5, 310)) 그 후 저장의 기능을 만들어 줍니다. 저장은 txt 파일이나 Exel파일 아무거나 상..

파이썬 실전) 로또 번호 생성기 6. 이전회차 당첨번호와 중복되는 번호

이번 강의는 로또 번호 생성기에 이전 회차의 번호와 현재 번호의 중복되는 개수를 제한하는 기능을 추가해 보겠습니다. 1. 중복 번호 만약 로또를 구매하실 때 이전 회차의 당첨번호와 거의 일치하신다면 어떻게 하시겠습니까? 저라면 심리적으로 같은 번호는 기피하게 될 것 같습니다. 대부분의 사람들은 이전 회차와 중복되는 번호는 피하게 됩니다. 이를 이용해 여러 로또 번호 사이트에서는 이전 회차와 중복되는 번호의 개수를 제한하는 필터링 기능을 만들어 놓은 경우가 많습니다. 이번 강의에서는 이전 회차의 번호와 중복되는 번호의 개수를 제한하는 기능을 만들어 보겠습니다. 2. 코드 저번 강의에서 requests와 BeautifulSoup를 이용해 이전 회차의 당첨번호를 조회하는 코드를 만들었습니다. 2021/02/1..

파이썬 실전) 로또 번호 생성기 5. 이전 회차 당첨번호

이번 강의는 requests와 BeautifulSoup를 이용하여 이전 회차 당첨 번호를 조회하는 코드를 만들어 보겠습니다. 1. 이전 회차 당첨 번호 보통 로또 당첨번호를 조회하실 때에는 네이버에서 확인하실 겁니다. 한국인이 가장 많이 사용하는 검색 엔진이기도 하고, 로또 번호라고 입력만 하면 바로 당첨번호가 조회가 되니 일반적으로는 가장 편하게 당첨번호를 조회하는 방법일 것입니다. 파이썬에서 네이버의 당첨번호를 조회하기 위해서는 로또 번호를 검색한 결과 화면에서 위의 번호를 추출해야 합니다. 하지만 네이버는 일반적인 파이썬 requests의 접근을 정상적으로 인식하지 못하는 경우가 많아서 사용하기 힘들 때가 있습니다. 동행 복권 홈페이지에서는 메인 화면에 당첨번호를 공지하고 있습니다. 동행 복권 홈페..

반응형