본문 바로가기
학부 자료/Python

[Python] 파이썬 기초 12/20, 파일 입출력의 활용

by jackMK 2023. 11. 7.

<내용정리>


- 관련 파일

12일차_221212.py
0.00MB


- 본문

### 파일 입출력의 활용
## 파일 복사
# p243
buffer_size = 1024  # 한번에 읽어들이는 데이터의 크기(1kb == 1024byte)
with open('Section14/code.mp4', 'rb') as source:  # 동영상을 바이너리 모드로 읽는다
    with open('Section14/code2.mp4', 'wb') as copy:  # 동영상을 바이너리 모드로 쓴다
        while True:
            buffer = source.read(buffer_size)
            if not buffer:
                break
            copy.write(buffer)
print('code.mp4 파일이 복사되었습니다')

## csv 파일 읽기
# # p246
student_list= []  # 최종결과를 담을 빈 리스트 생성
with open('Section14/학생명단.csv', 'rt') as file:
    file.readline()  # 제목 줄(삭제)
    while True:
        line = file.readline()
        if not line:
            break
        student = line.split(',') #  ,로 구분된 것을 분리하여 student에 담는다
        student_list.append(student)
print(student_list)

# p247
member_list = []
with open('Section14/회원명단.csv', 'rt') as file:
    file.readline()
    while True:
        line = file.readline()
        if not line:
            break
        member = line.split(',')
        member[0] = member[0].strip('"')
        member_list.append(member)
print(member_list)

# csv 모듈로 csv 파일 생성하기
import csv
with open('Section14/차량관리.csv', 'w', newline='') as file:
    csv_maker = csv.writer(file, delimiter=',')  # 쓰기 객체 생성
    csv_maker.writerow([1, '08러1234', '2020-7-20, 14:00'])
    csv_maker.writerow([2, '25다1234', '2020-11-24, 14:10'])
    csv_maker.writerow([3, '28하1234', '2020-10-28, 14:20'])
print('차량관리.csv 파일이 생성되었습니다')

# csv 모듈로 csv 파일 읽기
# p248
import csv
with open('Section14/차량관리.csv', 'r', newline='') as file:
    csv_reader = csv.reader(file, delimiter=',', quotechar='"')  # 읽기 객체 생성
    for line in csv_reader:
        print(line)

## json 파일 입출력
# json 파일 생성
import json
dict_list = [
    {
        'name':'james',
        'age':'20',
        'spec':[175.5, 70.5]
    },
    {
        'name':'alice',
        'age':'21',
        'spec':[168.5, 60.5]
    }
]
json_string = json.dumps(dict_list)  # json으로 인코딩
with open('Section14/dictList.json', 'w') as file:
    file.write(json_string)
print('dictList.json 파일이 생성되었습니다')

# json 파일 읽기
# p253
import json
with open('Section14/dictList.json', 'r') as file:
    json_reader = file.read()
    dict_list = json.loads(json_reader)  # 파이썬으로 변환
print(dict_list)
for dic in dict_list:
    print(f'이름 : {dic[name]}')
    print(f'나이 : {dic[age]}')
    print(f'키 : {dic[spec][0]}')
    print(f'몸무게 : {dic[spec][1]}')

### 클래스와 객체1
## 객체 지향 프로그래밍 (0bject-Oriented Programming, OOP)
-문제를 작게 나누어 객체(Object)를 만들고
객체를 조합해서 문제를 해결하는 방식
-복잡한 문제를 처리하는데 유용하며 기능을 개선하고 발전시킬 때도
해당 클래스만 수정하면 되므로 유지보수에 효율적

-클래스(class) : 똑같은 무엇인가를 계속해서 만들어 낼 수 있는 설계도(ex.와플기계)
-객체(object) : 와플기계에서 만들어낸 와플, 각각의 객체마다 고유의 특성을 가짐
                파이썬에서는 문자, 정수, 실수, 함수 등 모두 객체이다.
-인스턴스(instance) : 특정 객체가 어떤 클래스의 객체인지 관계 위주로 설명할 때 사용
                    클래스와 연관지어 객체를 말할 때 인스턴스라고 한다
-메서드(method) : 클래스 안에서 구현된 함수

<형식>
class 클래스이름:  # 파이썬에서는 클래스 이름을 주로 대문자로 시작
    def 메서드이름(self, 매개변수):  # self : 메서드를 호출한 객체가 자동으로 전달되는 매개변수
        self.속성 = 값  # 인스턴스변수 == 매개변수
인스턴스이름 = 클래스이름()  # 인스턴스 생성
인스턴스이름.메서드이름()  # 메서드 호출(함수 호출)

##인스턴스 변수와 인스턴스 메서드
# ex)
class Person:  # 클래스 정의
    def who_am_i(self, name, age, tel, address):  # 인스턴스 메서드 정의
        self.name = name  # 인스턴스 변수 = 매개변수
        self.age = age
        self.tel = tel
        self.address = address
boy = Person()  # 객체(인스턴스) 생성
boy.who_am_i('john', '20', '010-1234-5678', 'toronto')  # 함수(메서드) 호출
print(boy.name)  # boy == self
print(boy.age)
print(boy.tel)
print(boy.address)
print()

girl = Person()
girl.who_am_i('alice', '21', '010-9876-5432', 'chicago')
print(girl.name)
print(girl.age)
print(girl.tel)
print(girl.address)

loading