juuuding
Chapter 03 기초 프로그램 만들기 #4, 5, 6 본문
#4 QR코드 생성기
1. 라이브러리 설치
-qrcode 라이브러리 설치
pip install qrcode
2. QR코드 생성 코드
import qrcode
qr_data= 'www.naver.com'
# qrcode.make으로 이미지 만들기
qr_img= qrcode.make(qr_data)
# save_path 변수에 저장될 경로 바인딩
save_path='4. QR code\\' + qr_data + '.png'
# 이미지 저장
qr_img.save(save_path)
3. 여러 개의 QR코드 한 번에 생성하는 코드
(1) .txt 파일 읽고 한 줄씩 표시하는 코드
import qrcode
file_path=r'4. QR code\qrcode.txt'
# readlines()로 파일 읽고 줄 별로 리스트 값의 형태로 내어줌
with open(file_path, 'rt', encoding='UTF8') as f:
read_lines=f.readlines()
#line.strip()은 줄 마지막에 줄바꿈 문자 삭제
for line in read_lines:
line=line.strip()
print(line)
(2) 읽어온 주소로 qr 코드 생성
import qrcode
file_path=r'4. QR code\qrcode.txt'
with open(file_path, 'rt', encoding='UTF8') as f:
read_lines=f.readlines()
for line in read_lines:
line=line.strip()
print(line)
qr_data = line
qr_img = qrcode.make(qr_data)
save_path= '4. QR code\\'+qr_data+'.png'
qr_img.save(save_path)
+ 실행 하였을 때 "No module named image"라는 오류가 떴다.
pip install pillow
위의 문장을 터미널에 입력하여 PIL (Python Image Library and Imaging package) 설치하면서 문제 해결.
#5 컴퓨터의 정보 확인
1. 라이브러리 설치
-psutil : 컴퓨터 정보 확인할 때 사용하는 라이브러리
pip install psutil
2. 컴퓨터 정보 확인
import psutil
#cpu 속도
cpu=psutil.cpu_freq()
print(cpu)
#cpu 물리코어 수
cpu_core=psutil.cpu_count(logical=False)
print(cpu_core)
#메모리 정보
memory = psutil.virtual_memory()
print(memory)
#디스크 정보
disk=psutil.disk_partitions()
print(disk)
#네트워크 통해 보내고 받은 데이터량
net=psutil.net_io_counters()
print(net)
3. 필요한 정보만 출력하기
import psutil
#cpu 속도
cpu=psutil.cpu_freq()
cpu_current_ghz = round(cpu.current/1000,2)
print(f"cpu 속도: {cpu_current_ghz}GHz")
#cpu 물리코어 수
cpu_core=psutil.cpu_count(logical=False)
print(f"코어: {cpu_core}개")
#메모리 정보
memory = psutil.virtual_memory()
memory_total=round(memory.total/1024**3)
print(f"메모리: {memory_total}GB")
#디스크 정보
disk=psutil.disk_partitions()
for p in disk:
print(p.mountpoint,p.fstype,end=' ')
du = psutil.disk_usage(p.mountpoint)
disk_total = round(du.total/1024**3)
print(f"디스크 크기: {disk_total}GB")
#네트워크 통해 보내고 받은 누적 데이터량
net=psutil.net_io_counters()
sent= round(net.bytes_sent/1024**2,1)
recv= round(net.bytes_recv/1024**2,1)
print(f'보내기: {sent}MB, 받기: {recv}MB')
4. 1초당 반복해서 정보 출력
import psutil
curr_sent=0
curr_recv=0
prev_sent=0
prev_recv=0
while True:
#cpu 사용량 1초 동안의 평균값 구하기, interval 값으로 시간 조절 가능능
cpu_p= psutil.cpu_percent(interval=1)
print(f'CPU 사용량: {cpu_p}%')
memory = psutil.virtual_memory()
memory_avail = round(memory.available/1024**3,1)
print(f'사용 가능한 메모리:{memory_avail}GB')
net=psutil.net_io_counters()
curr_sent=net.bytes_sent/1024**2
curr_recv=net.bytes_recv/1024**2
sent=round(curr_sent-prev_sent,1)
recv=round(curr_recv-prev_recv,1)
print(f'보내기: {sent}MB 받기:{recv}MB')
prev_sent=curr_sent
prev_recv=curr_recv
#6 압축파일 암호 푸는 프로그램
1. 압축 푸는 코드 만들고 실행
import itertools
passwd_string = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
#1~3까지 반복
for len in range(1,4):
#passwd_string 문자열을 repeat=길이로 정렬하여 반환
to_attempt=itertools.product(passwd_string,repeat=len)
#반환된 문자의 수만큼 반복
for attempt in to_attempt:
#반환된 값을 문자열로 반환. ''.join(리스트)는 리스트의 값을 문자열로 반환
passwd=''.join(attempt)
print(passwd)
- 1자리부터 3자리까지 숫자, 영문 소문자, 영문 대문자의 값이 순서대로 출력된다. 자리수가 늘어나면 경우의 수가 많아짐으로 시간이 오래 소요된다.
2. 비밀번호를 찾으면 프로그램 종료
import itertools
import zipfile
def un_zip(passwd_string, min_len, max_len,zFile):
for len in range(min_len, max_len+1):
#passwd_string 문자열을 repeat=길이로 정렬하여 반환
to_attempt = itertools.product(passwd_string, repeat = len)
#반환된 문자의 수만큼 반복
for attempt in to_attempt:
#반환된 값을 문자열로 반환. ''.join(리스트)는 리스트의 값을 문자열로 반환
passwd = ''.join(attempt)
print(passwd)
try:
zFile.extractall(pwd=passwd.encode())
print(f"비밀번호는 {passwd} 입니다.")
return 1
except:
pass
passwd_string = "0123456789"
zFile=zipfile.ZipFile(r'6. Zipfile decoding\code1234.zip')
min_len =1
max_len =5
unzip_result = un_zip(passwd_string, min_len, max_len, zFile)
if unzip_result ==1:
print("암호 찾기에 성공하였습니다.")
else:
print("암호 찾기에 실패하였습니다.")
'Python > 파이썬과 40개의 작품들' 카테고리의 다른 글
Chapter 04 자동화 프로그램 만들기 #11 (0) | 2023.02.08 |
---|---|
Chapter 04 자동화 프로그램 만들기 #10 (0) | 2023.01.30 |
Chapter 04 자동화 프로그램 만들기 #9 (0) | 2023.01.27 |
Chapter 03 기초 프로그램 만들기 #7, 8 (0) | 2023.01.24 |
Chapter 03 기초 프로그램 만들기 #2, 3 (1) | 2023.01.12 |