본문 바로가기
Base/Python

17. 기본 파일처리 / CSV 파일 읽고 쓰기

by 귀멸 2023. 3. 8.

혼공파 64 ~ 65 강

 

1. 기본 파일 처리 

# 파일 처리
# 읽기 처리 / 쓰기 처리

# (1) 스트림 연결(stream)
## 파일 = open("경로", "모드")
## w 쓰기 모드, a 추가해서 쓰기 모드, r 읽기 모드
파일 = open("test.txt", "r")

# (2) 스트림을 통해 데이터 통신
문자열 = 파일.read()
print(문자열)

# (3) 스트림 해제
파일.close()

# with as 구문 스트림이 구문이 끝나면 해제된다.
with open("test.txt", "r") as 파일:
  문자열 = 파일.read()
  print(문자열)

# 파일이 없어도 w 모드에서는 파일이 생성된다.
# 새로 실행하면 기존 내용은 지우고 새로 입력한 내용이 들어간다.
# a 모드에서는 뒤에 내용이 추가 된다.
with open("a.txt", "w") as 파일:
  파일.write("안녕하세요")


# 입력 데이터 누적 프로그램

파일 = open("data.txt", "r")
데이터 = 파일.read()
if 데이터 != "":
  print(데이터.strip().split("\n"))
파일.close()


문자열 = input("> 데이터를 입력해주세요: ")

파일 = open("data.txt", "a")
파일.write(문자열.strip() + "\n")
파일.close()

2. CSV 파일 읽고 쓰기

# 파이썬
# 인공지능 개발 or 데이터 분석
# Comma Separator Values (CSV 데이터) 
# : 콤마로 구분되어 나열된 데이터

# BMI 데이터 만들기
# 이름,키,몸무게 [Header]
# 랜덤하게 1명의 키와 몸무게 만들기
import random
한글 = list("가나다라마바사아자차카타파하")

파일 = open("human.txt", "w")
파일.write("이름,몸무게,키\n")
for i in range(1000):
  이름 = random.choice(한글) + random.choice(한글)
  몸무게 = random.randrange(40, 120)
  키 = random.randrange(140, 200)
  파일.write(f"{이름}, {몸무게}, {키}\n")
파일.close()
# print("{},{},{}".format(이름, 몸무게, 키))
# print(",".join([이름, str(몸무게), str(키)]))

# CSV 파일을 읽어와서 BMI를 구하고 데이터 만드는 프로그램
# 위의 BMI DATA 파일이 만들어지면 이어서

파일 = open("human.txt", "r")

for 한줄 in 파일:
  이름,몸무게,키 = 한줄.strip().split(",")

  if not 몸무게.strip().isdigit():
    continue
  몸무게 = int(몸무게.strip())
  키 = int(키.strip())
  bmi = 몸무게 / (키 / 100) ** 2
  결과 = ""
  if 25 <= bmi:
    결과 = "과체중"
  elif 18.5 <= bmi:
    결과 = "정상체중"
  else:
    결과 = "저체중"

  print("\n".join([
    f"이름: {이름}",
    f"몸무게: {몸무게}",
    f"키: {키}",
    f"BMI: {bmi}",
    f"결과: {결과}", ""
  ]))

 

댓글