from tkinter import * # tkinter 모듈로부터 모든 기능을 불러옴
from tkinter.simpledialog import * # tkinter의 simpledialog 모듈로부터 모든 기능을 불러옴
## 함수 선언 부분 ##
window = Tk() # Tk 클래스의 인스턴스 생성, 새 창 생성
window.geometry("400x100") # 창 크기를 400x100 픽셀로 설정
label1 = Label(window, text="입력된 값") # Label 클래스의 인스턴스 생성, 부모 윈도우는 window, 텍스트는 "입력된 값"
label1.pack() # 라벨을 윈도우에 배치
# askinteger 함수를 사용하여 사용자로부터 정수 값을 입력 받음
# 첫 번째 매개변수는 대화 상자 제목, 두 번째 매개변수는 대화 상자 메시지
# minvalue와 maxvalue 매개변수를 사용하여 입력할 수 있는 값의 범위를 지정
value = askinteger("확대배수", "주사위 숫자(1~6)을 입력하세요", minvalue=1, maxvalue=6)
# 입력받은 값을 문자열로 변환하여 label1의 텍스트로 설정
label1.configure(text=str(value))
window.mainloop() # GUI 이벤트 루프 시작, 윈도우를 띄우고 사용자 입력을 기다림
from tkinter import * # tkinter 모듈로부터 모든 기능을 불러옴
from tkinter.filedialog import * # tkinter의 filedialog 모듈로부터 모든 기능을 불러옴
## 함수 선언 부분 ##
window = Tk() # Tk 클래스의 인스턴스 생성, 새 창 생성
window.geometry("400x100") # 창 크기를 400x100 픽셀로 설정
label1 = Label(window, text="선택된 파일 이름") # Label 클래스의 인스턴스 생성, 부모 윈도우는 window, 텍스트는 "선택된 파일 이름"
label1.pack() # 라벨을 윈도우에 배치
# askopenfilename 함수를 사용하여 파일 선택 대화상자를 띄움
# parent 매개변수로는 대화상자의 부모 윈도우를 지정하고, filetypes 매개변수로 사용 가능한 파일 형식을 제한함
filename = askopenfilename(parent=window, filetypes=(("GIF 파일", "*.gif"), ("모든 파일", "*.*")))
# 선택된 파일 이름을 문자열로 변환하여 label1의 텍스트로 설정
label1.configure(text=str(filename))
window.mainloop() # GUI 이벤트 루프 시작, 윈도우를 띄우고 사용자 입력을 기다림
한 행씩 읽어 들이기
inFp = None # 입력 파일
inStr = "" # 읽어 온 문자열
inFp = open("C:/Temp/happy.txt", "r", encoding="utf-8")
inStr = inFp.readline()
print(inStr, end = "")
inStr = inFp.readline()
print(inStr, end = "")
inStr = inFp.readline()
print(inStr, end = "")
inFp.close()
결과

숙제 : 혼자 공부하는 파이썬 3장, 4장 확인문제, 도전문제 다 풀기
CSV 파일 개념
DB를 사용할 수 없을 때 사용해야 함.
데이터가 쉼표로 구분이 됨

CSV 파일 처리
def printList(pList):
# 리스트의 각 요소를 반복하여 출력
for data in pList:
print(data, end='\t') # 요소를 탭으로 구분하여 출력
print() # 줄 바꿈
with open("C:\\Users\\Public\\Documents\\pythontest\\code6\\new_singer1.csv", "r") as inFp:
header = inFp.readline() # 첫 번째 줄을 읽어 헤더로 사용
header = header.strip() # 문자열 양쪽의 공백 제거
header_list = header.split(',') # 쉼표로 구분하여 리스트로 변환
printList(header_list) # 헤더 리스트 출력
for inStr in inFp: # 파일에서 한 줄씩 읽기
inStr = inStr.strip() # 문자열 양쪽의 공백 제거
row_list = inStr.split(',') # 쉼표로 구분하여 리스트로 변환
printList(row_list) # 각 행 리스트 출력
이 코드는 CSV 파일을 읽고 각 행의 데이터를 출력하는 예제입니다. `printList` 함수는 주어진 리스트의 각 요소를 탭으로 구분하여 출력합니다. CSV 파일을 열고 첫 번째 줄을 헤더로 읽어 헤더 리스트를 만든 후 출력합니다. 그런 다음 파일에서 각 행을 읽어와 각 행의 데이터를 리스트로 만들고 출력합니다.
결과값

챗지피티짱
너없었으면 공부 어떻게 했겠니..
csv 너무 어렵다..
역시 응용수학을 못하던 나..
난 사실 FM이 좋은걸지도모르겠음
CSV 라이브러리
import csv # csv 모듈을 임포트합니다.
# CSV 파일을 읽어오기 위해 'with' 문을 사용하여 파일을 엽니다.
with open("C:\\Users\\Public\\Documents\\pythontest\\code6\\singer2.csv", "r") as inFp:
csvReader = csv.reader(inFp) # CSV 파일을 읽는 리더 객체를 생성합니다.
header_list = next(csvReader) # 첫 번째 행을 읽고 헤더 리스트에 할당합니다.
print(header_list[1], header_list[6]) # 헤더 리스트의 두 번째와 일곱 번째 열의 값을 출력합니다.
# 파일의 나머지 행을 반복하며 처리합니다.
for row_list in csvReader:
youtube = int(row_list[6].replace(',', '')) # 일곱 번째 열의 값을 쉼표를 제거하고 정수로 변환합니다.
youtube = int(youtube / 10000) # 값을 만 단위로 나누어 변환합니다.
print(row_list[1], str(youtube) + "만") # 두 번째 열의 값과 변환된 값을 출력합니다.
- csv 모듈을 임포트합니다.
- with 문을 사용하여 CSV 파일을 엽니다. 파일 객체를 inFp에 할당합니다.
- csv.reader() 함수를 사용하여 CSV 파일을 읽는 리더 객체인 csvReader를 생성합니다.
- next(csvReader)를 호출하여 첫 번째 행을 읽고, 헤더 리스트를 header_list에 할당합니다.
- 헤더 리스트에서 두 번째와 일곱 번째 열의 값을 출력합니다.
- for 루프를 사용하여 파일의 나머지 행을 반복하며 처리합니다.
- 각 행의 일곱 번째 열의 값을 쉼표(,)를 제거하고 정수로 변환한 후, 만 단위로 나누어 줄여서 출력합니다.
CSV 응용 프로그램
from tkinter import *
import csv
## 함수 선언 부분 ##
def makeEmptySheet(window, r, w):
"""
빈 시트를 생성하는 함수입니다.
Parameters:
window (Tk): 윈도우 객체입니다.
r (int): 행 수입니다.
w (int): 열 수입니다.
Returns:
list: 빈 시트를 나타내는 2차원 리스트입니다.
"""
retList = []
for i in range(0, r):
tmpList = []
for k in range(0, w):
ent = Entry(window, text='', width=10) # 텍스트 입력 위젯을 생성합니다.
ent.grid(row=i, column=k) # 위젯을 그리드에 배치합니다.
tmpList.append(ent)
retList.append(tmpList)
return retList
## 전역 변수 부분 ##
window = Tk() # Tkinter 윈도우 객체를 생성합니다.
csvList = [] # CSV 파일의 데이터를 저장할 리스트입니다.
# CSV 파일을 읽어와서 csvList에 저장합니다.
with open("C:\\Users\\Public\\Documents\\pythontest\\code6\\singer1.csv", "r") as inFp:
csvReader = csv.reader(inFp)
header_list = next(csvReader)
csvList.append(header_list) # 헤더를 csvList에 추가합니다.
for row in csvReader:
csvList.append(row) # 나머지 행을 csvList에 추가합니다.
rowNum = len(csvList) # CSV 파일의 행 수를 가져옵니다.
colNum = len(csvList[0]) # CSV 파일의 열 수를 가져옵니다.
# 빈 시트를 생성합니다.
workSheet = makeEmptySheet(window, rowNum, colNum)
idx = 6
# csvList의 각 요소를 순회하며 시트에 데이터를 채웁니다.
for i in range(0, rowNum):
for k in range(0, colNum):
if csvList[i][idx].isnumeric():
if int(csvList[i][idx]) >= 167:
ent = workSheet[i][k]
ent.configure(bg='yellow') # 배경색을 노란색으로 변경합니다.
workSheet[i][k].insert(0, csvList[i][k]) # 시트에 데이터를 삽입합니다.
window.mainloop() # GUI 루프를 시작합니다.
CSV + 저장하기까지 추가
from tkinter import *
import csv
## 함수 선언 부분 ##
def makeEmptySheet(window, r, w):
"""
빈 시트를 생성하는 함수입니다.
Parameters:
window (Tk): 윈도우 객체입니다.
r (int): 행 수입니다.
w (int): 열 수입니다.
Returns:
list: 빈 시트를 나타내는 2차원 리스트입니다.
"""
retList = []
for i in range(0, r):
tmpList = []
for k in range(0, w):
ent = Entry(window, text='', width=10) # 텍스트 입력 위젯을 생성합니다.
ent.grid(row=i, column=k) # 위젯을 그리드에 배치합니다.
tmpList.append(ent)
retList.append(tmpList)
return retList
def saveCSV():
"""
CSV 파일에 데이터를 저장하는 함수입니다.
"""
with open("C:\\Users\\Public\\Documents\\pythontest\\code6\\saved_data.csv", "w", newline='') as outFp:
writer = csv.writer(outFp)
for row in workSheet:
writer.writerow([ent.get() for ent in row])
## 전역 변수 부분 ##
window = Tk() # Tkinter 윈도우 객체를 생성합니다.
csvList = [] # CSV 파일의 데이터를 저장할 리스트입니다.
# CSV 파일을 읽어와서 csvList에 저장합니다.
with open("C:\\Users\\Public\\Documents\\pythontest\\code6\\singer1.csv", "r") as inFp:
csvReader = csv.reader(inFp)
header_list = next(csvReader)
csvList.append(header_list) # 헤더를 csvList에 추가합니다.
for row in csvReader:
csvList.append(row) # 나머지 행을 csvList에 추가합니다.
rowNum = len(csvList) # CSV 파일의 행 수를 가져옵니다.
colNum = len(csvList[0]) # CSV 파일의 열 수를 가져옵니다.
# 빈 시트를 생성합니다.
workSheet = makeEmptySheet(window, rowNum, colNum)
idx = 6
# csvList의 각 요소를 순회하며 시트에 데이터를 채웁니다.
for i in range(0, rowNum):
for k in range(0, colNum):
if csvList[i][idx].isnumeric():
if int(csvList[i][idx]) >= 167:
ent = workSheet[i][k]
ent.configure(bg='yellow') # 배경색을 노란색으로 변경합니다.
ent = workSheet[i][k]
ent.insert(0, csvList[i][k]) # 시트에 데이터를 삽입합니다.
# "Save" 버튼을 생성하고, 버튼이 클릭되었을 때 saveCSV 함수를 실행합니다.
save_button = Button(window, text="Save", command=saveCSV)
save_button.grid(row=rowNum+1, column=0, columnspan=colNum, pady=10)
window.mainloop() # GUI 루프를 시작합니다.

엑셀 파일 처리
import xlrd
# Excel 파일 열기
workbook = xlrd.open_workbook('C:\\Users\\Public\\Documents\\pythontest\\source\\Excel\\singer.xls')
# 시트 개수 가져오기
sheetCount = workbook.nsheets
# 전체 가수 그룹 인원 합계 및 행, 열, 셀 인덱스 초기화
personNum = 0
personIdx = 2
rowCount = 0
# 각 시트에 대해 처리
wsheetList = workbook.sheets()
for wsheet in wsheetList:
rowCount += worksheet.nrows - 1 # 행 수 합산 (첫 행은 헤더이므로 제외)
for row in range(1, worksheet.nrows): # 첫 행은 헤더이므로 건너뜀
personNum += int(worksheet.cell_value(row, personIdx)) # 가수 그룹의 인원 수 합산
# 결과 출력
print("전체 가수 그룹 인원 합계 : ", personNum)
print("가수그룹 인원 평균 : ", personNum / rowCount)
'공부 기록' 카테고리의 다른 글
2024.04.11. 알고리즘 (0) | 2024.04.11 |
---|---|
2024.04.08. ITQ (0) | 2024.04.09 |
2024.04.02. ITQ (0) | 2024.04.02 |
2024.03.26. (파이썬) (1) | 2024.03.26 |
2024.03.18 C언어 (0) | 2024.03.18 |
from tkinter import * # tkinter 모듈로부터 모든 기능을 불러옴
from tkinter.simpledialog import * # tkinter의 simpledialog 모듈로부터 모든 기능을 불러옴
## 함수 선언 부분 ##
window = Tk() # Tk 클래스의 인스턴스 생성, 새 창 생성
window.geometry("400x100") # 창 크기를 400x100 픽셀로 설정
label1 = Label(window, text="입력된 값") # Label 클래스의 인스턴스 생성, 부모 윈도우는 window, 텍스트는 "입력된 값"
label1.pack() # 라벨을 윈도우에 배치
# askinteger 함수를 사용하여 사용자로부터 정수 값을 입력 받음
# 첫 번째 매개변수는 대화 상자 제목, 두 번째 매개변수는 대화 상자 메시지
# minvalue와 maxvalue 매개변수를 사용하여 입력할 수 있는 값의 범위를 지정
value = askinteger("확대배수", "주사위 숫자(1~6)을 입력하세요", minvalue=1, maxvalue=6)
# 입력받은 값을 문자열로 변환하여 label1의 텍스트로 설정
label1.configure(text=str(value))
window.mainloop() # GUI 이벤트 루프 시작, 윈도우를 띄우고 사용자 입력을 기다림
from tkinter import * # tkinter 모듈로부터 모든 기능을 불러옴
from tkinter.filedialog import * # tkinter의 filedialog 모듈로부터 모든 기능을 불러옴
## 함수 선언 부분 ##
window = Tk() # Tk 클래스의 인스턴스 생성, 새 창 생성
window.geometry("400x100") # 창 크기를 400x100 픽셀로 설정
label1 = Label(window, text="선택된 파일 이름") # Label 클래스의 인스턴스 생성, 부모 윈도우는 window, 텍스트는 "선택된 파일 이름"
label1.pack() # 라벨을 윈도우에 배치
# askopenfilename 함수를 사용하여 파일 선택 대화상자를 띄움
# parent 매개변수로는 대화상자의 부모 윈도우를 지정하고, filetypes 매개변수로 사용 가능한 파일 형식을 제한함
filename = askopenfilename(parent=window, filetypes=(("GIF 파일", "*.gif"), ("모든 파일", "*.*")))
# 선택된 파일 이름을 문자열로 변환하여 label1의 텍스트로 설정
label1.configure(text=str(filename))
window.mainloop() # GUI 이벤트 루프 시작, 윈도우를 띄우고 사용자 입력을 기다림
한 행씩 읽어 들이기
inFp = None # 입력 파일
inStr = "" # 읽어 온 문자열
inFp = open("C:/Temp/happy.txt", "r", encoding="utf-8")
inStr = inFp.readline()
print(inStr, end = "")
inStr = inFp.readline()
print(inStr, end = "")
inStr = inFp.readline()
print(inStr, end = "")
inFp.close()
결과

숙제 : 혼자 공부하는 파이썬 3장, 4장 확인문제, 도전문제 다 풀기
CSV 파일 개념
DB를 사용할 수 없을 때 사용해야 함.
데이터가 쉼표로 구분이 됨

CSV 파일 처리
def printList(pList):
# 리스트의 각 요소를 반복하여 출력
for data in pList:
print(data, end='\t') # 요소를 탭으로 구분하여 출력
print() # 줄 바꿈
with open("C:\\Users\\Public\\Documents\\pythontest\\code6\\new_singer1.csv", "r") as inFp:
header = inFp.readline() # 첫 번째 줄을 읽어 헤더로 사용
header = header.strip() # 문자열 양쪽의 공백 제거
header_list = header.split(',') # 쉼표로 구분하여 리스트로 변환
printList(header_list) # 헤더 리스트 출력
for inStr in inFp: # 파일에서 한 줄씩 읽기
inStr = inStr.strip() # 문자열 양쪽의 공백 제거
row_list = inStr.split(',') # 쉼표로 구분하여 리스트로 변환
printList(row_list) # 각 행 리스트 출력
이 코드는 CSV 파일을 읽고 각 행의 데이터를 출력하는 예제입니다. `printList` 함수는 주어진 리스트의 각 요소를 탭으로 구분하여 출력합니다. CSV 파일을 열고 첫 번째 줄을 헤더로 읽어 헤더 리스트를 만든 후 출력합니다. 그런 다음 파일에서 각 행을 읽어와 각 행의 데이터를 리스트로 만들고 출력합니다.
결과값

챗지피티짱
너없었으면 공부 어떻게 했겠니..
csv 너무 어렵다..
역시 응용수학을 못하던 나..
난 사실 FM이 좋은걸지도모르겠음
CSV 라이브러리
import csv # csv 모듈을 임포트합니다.
# CSV 파일을 읽어오기 위해 'with' 문을 사용하여 파일을 엽니다.
with open("C:\\Users\\Public\\Documents\\pythontest\\code6\\singer2.csv", "r") as inFp:
csvReader = csv.reader(inFp) # CSV 파일을 읽는 리더 객체를 생성합니다.
header_list = next(csvReader) # 첫 번째 행을 읽고 헤더 리스트에 할당합니다.
print(header_list[1], header_list[6]) # 헤더 리스트의 두 번째와 일곱 번째 열의 값을 출력합니다.
# 파일의 나머지 행을 반복하며 처리합니다.
for row_list in csvReader:
youtube = int(row_list[6].replace(',', '')) # 일곱 번째 열의 값을 쉼표를 제거하고 정수로 변환합니다.
youtube = int(youtube / 10000) # 값을 만 단위로 나누어 변환합니다.
print(row_list[1], str(youtube) + "만") # 두 번째 열의 값과 변환된 값을 출력합니다.
- csv 모듈을 임포트합니다.
- with 문을 사용하여 CSV 파일을 엽니다. 파일 객체를 inFp에 할당합니다.
- csv.reader() 함수를 사용하여 CSV 파일을 읽는 리더 객체인 csvReader를 생성합니다.
- next(csvReader)를 호출하여 첫 번째 행을 읽고, 헤더 리스트를 header_list에 할당합니다.
- 헤더 리스트에서 두 번째와 일곱 번째 열의 값을 출력합니다.
- for 루프를 사용하여 파일의 나머지 행을 반복하며 처리합니다.
- 각 행의 일곱 번째 열의 값을 쉼표(,)를 제거하고 정수로 변환한 후, 만 단위로 나누어 줄여서 출력합니다.
CSV 응용 프로그램
from tkinter import *
import csv
## 함수 선언 부분 ##
def makeEmptySheet(window, r, w):
"""
빈 시트를 생성하는 함수입니다.
Parameters:
window (Tk): 윈도우 객체입니다.
r (int): 행 수입니다.
w (int): 열 수입니다.
Returns:
list: 빈 시트를 나타내는 2차원 리스트입니다.
"""
retList = []
for i in range(0, r):
tmpList = []
for k in range(0, w):
ent = Entry(window, text='', width=10) # 텍스트 입력 위젯을 생성합니다.
ent.grid(row=i, column=k) # 위젯을 그리드에 배치합니다.
tmpList.append(ent)
retList.append(tmpList)
return retList
## 전역 변수 부분 ##
window = Tk() # Tkinter 윈도우 객체를 생성합니다.
csvList = [] # CSV 파일의 데이터를 저장할 리스트입니다.
# CSV 파일을 읽어와서 csvList에 저장합니다.
with open("C:\\Users\\Public\\Documents\\pythontest\\code6\\singer1.csv", "r") as inFp:
csvReader = csv.reader(inFp)
header_list = next(csvReader)
csvList.append(header_list) # 헤더를 csvList에 추가합니다.
for row in csvReader:
csvList.append(row) # 나머지 행을 csvList에 추가합니다.
rowNum = len(csvList) # CSV 파일의 행 수를 가져옵니다.
colNum = len(csvList[0]) # CSV 파일의 열 수를 가져옵니다.
# 빈 시트를 생성합니다.
workSheet = makeEmptySheet(window, rowNum, colNum)
idx = 6
# csvList의 각 요소를 순회하며 시트에 데이터를 채웁니다.
for i in range(0, rowNum):
for k in range(0, colNum):
if csvList[i][idx].isnumeric():
if int(csvList[i][idx]) >= 167:
ent = workSheet[i][k]
ent.configure(bg='yellow') # 배경색을 노란색으로 변경합니다.
workSheet[i][k].insert(0, csvList[i][k]) # 시트에 데이터를 삽입합니다.
window.mainloop() # GUI 루프를 시작합니다.
CSV + 저장하기까지 추가
from tkinter import *
import csv
## 함수 선언 부분 ##
def makeEmptySheet(window, r, w):
"""
빈 시트를 생성하는 함수입니다.
Parameters:
window (Tk): 윈도우 객체입니다.
r (int): 행 수입니다.
w (int): 열 수입니다.
Returns:
list: 빈 시트를 나타내는 2차원 리스트입니다.
"""
retList = []
for i in range(0, r):
tmpList = []
for k in range(0, w):
ent = Entry(window, text='', width=10) # 텍스트 입력 위젯을 생성합니다.
ent.grid(row=i, column=k) # 위젯을 그리드에 배치합니다.
tmpList.append(ent)
retList.append(tmpList)
return retList
def saveCSV():
"""
CSV 파일에 데이터를 저장하는 함수입니다.
"""
with open("C:\\Users\\Public\\Documents\\pythontest\\code6\\saved_data.csv", "w", newline='') as outFp:
writer = csv.writer(outFp)
for row in workSheet:
writer.writerow([ent.get() for ent in row])
## 전역 변수 부분 ##
window = Tk() # Tkinter 윈도우 객체를 생성합니다.
csvList = [] # CSV 파일의 데이터를 저장할 리스트입니다.
# CSV 파일을 읽어와서 csvList에 저장합니다.
with open("C:\\Users\\Public\\Documents\\pythontest\\code6\\singer1.csv", "r") as inFp:
csvReader = csv.reader(inFp)
header_list = next(csvReader)
csvList.append(header_list) # 헤더를 csvList에 추가합니다.
for row in csvReader:
csvList.append(row) # 나머지 행을 csvList에 추가합니다.
rowNum = len(csvList) # CSV 파일의 행 수를 가져옵니다.
colNum = len(csvList[0]) # CSV 파일의 열 수를 가져옵니다.
# 빈 시트를 생성합니다.
workSheet = makeEmptySheet(window, rowNum, colNum)
idx = 6
# csvList의 각 요소를 순회하며 시트에 데이터를 채웁니다.
for i in range(0, rowNum):
for k in range(0, colNum):
if csvList[i][idx].isnumeric():
if int(csvList[i][idx]) >= 167:
ent = workSheet[i][k]
ent.configure(bg='yellow') # 배경색을 노란색으로 변경합니다.
ent = workSheet[i][k]
ent.insert(0, csvList[i][k]) # 시트에 데이터를 삽입합니다.
# "Save" 버튼을 생성하고, 버튼이 클릭되었을 때 saveCSV 함수를 실행합니다.
save_button = Button(window, text="Save", command=saveCSV)
save_button.grid(row=rowNum+1, column=0, columnspan=colNum, pady=10)
window.mainloop() # GUI 루프를 시작합니다.

엑셀 파일 처리
import xlrd
# Excel 파일 열기
workbook = xlrd.open_workbook('C:\\Users\\Public\\Documents\\pythontest\\source\\Excel\\singer.xls')
# 시트 개수 가져오기
sheetCount = workbook.nsheets
# 전체 가수 그룹 인원 합계 및 행, 열, 셀 인덱스 초기화
personNum = 0
personIdx = 2
rowCount = 0
# 각 시트에 대해 처리
wsheetList = workbook.sheets()
for wsheet in wsheetList:
rowCount += worksheet.nrows - 1 # 행 수 합산 (첫 행은 헤더이므로 제외)
for row in range(1, worksheet.nrows): # 첫 행은 헤더이므로 건너뜀
personNum += int(worksheet.cell_value(row, personIdx)) # 가수 그룹의 인원 수 합산
# 결과 출력
print("전체 가수 그룹 인원 합계 : ", personNum)
print("가수그룹 인원 평균 : ", personNum / rowCount)
'공부 기록' 카테고리의 다른 글
2024.04.11. 알고리즘 (0) | 2024.04.11 |
---|---|
2024.04.08. ITQ (0) | 2024.04.09 |
2024.04.02. ITQ (0) | 2024.04.02 |
2024.03.26. (파이썬) (1) | 2024.03.26 |
2024.03.18 C언어 (0) | 2024.03.18 |