34. 파이썬 – 파일 읽고 쓰기(파일 생성)

34. 파이썬 – 파일 읽고 쓰기(파일 생성)

여태까지 공부한 내용들에서 입력을 받을 때는 사용자가 직접 입력하는 방식을 사용하고, 출력 할 때는 화면에 출력을 했습니다.


그러나 입출력 방식이 꼭 이렇게만 있는 것은 아닙니다.
이번 시간에는 파일을 통해서 입출력 하는 방식에 대해 공부해 보겠습니다.
파일을 새로 만들고 프로그램에서 나온 결과값을 역시 새 파일로 출력해 보겠습니다.
또한 파일에 기록된 내용을 읽고, 새로운 내용을 추가하는 방법도 공부해 보겠습니다.

파이썬 입출력

파일 읽고 쓰기

파일 생성

다음 코드를 실행해 보겠습니다.

Python
file = open("신규파일.txt", "w")
file.close()

위 코드를 실행해 보면 프로그램이 실행된 디렉토리에 파일이 하나 생성 된 것을 확인 할 수 있습니다.

34. 파이썬 - 파일 읽고 쓰기

위 코드에서 사용된 open 은 내장함수로 파일을 생성하기 위해 사용되었습니다.
open 함수는 아래 형식처럼 ‘파일 이름’과 ‘파일 열기 모드’를 입력받고 결과값으로 파일 객체를 리턴하게 됩니다.

파일 객체 = open(파일 이름, 파일 열기 모드)
파일 열기 모드

파일 열기 모드에는 여러가지가 있습니다.

  • r – 읽기 모드 : 파일을 읽기만 할때 사용됩니다.
  • w – 쓰기 모드 : 파일에 내용을 기록하고자 할 때 사용됩니다.
  • a – 추가 모드 : 파일의 마지막에 새로운 내용을 추가 하고자 할 때 사용됩니다.

주의 해야 할 건 파일을 쓰기 모드로 열게 되면 이미 파일이 존재할 경우에 원래의 내용은 모두 없어지고, 파일이 존재하지 않는다면 새로운 파일이 생성된다는 것입니다.
위 예제로 나온 코드는 해당 폴더에 파일이 없는 상태에서 신규파일.txt 를 쓰기 모드 ‘w’로 열었기 때문에 신규파일.txt 라는 이름의 새로운 파일이 현재 폴더에 생성된 것입니다.
만일 신규파일.txt 를 다른 폴더에 생성하려 한다면 아래처럼 하시면 됩니다.

Python
file = open("D:/test/신규파일.txt", "w")
file.close()

하지만 위처럼 다른 폴더를 선택해서 파일을 만들려고 한다면 해당 경로에 폴더는 이미 생성이 되어있어야 오류가 안날겁니다.
그리고 위 코드에서 사용되는 file.close() 명령은 열려 있는 파일의 객체를 닫아 주라는 의미입니다.
이 문장은 생략해도 되긴 합니다.
왜냐면 파이썬에서는 프로그램을 종료할 때 파이썬 프로그램이 열려있는 파일의 객체를 자동을 닫아주기 때문입니다.
그러나 그렇다고 해도 close()를 사용해서 직접 열려있는 파일을 닫아 주는 것이 좋습니다.
이유는 쓰기모드로 열었던 파일을 닫지 않고 다시 사용하려고 한다면 오류가 발생할 수 있기 때문입니다.

파일 경로와 슬래시(/)

보통 윈도우에서 파일 경로를 표현 할 때는 경로에 역슬래시(\) 를 사용해 D:\ 식으로 표현을 합니다.(실제 화면상에서는 \ 로 보이기도 합니다.)
하지만 위 코드에서는 슬래시(/)를 사용해 D:/test/신규파일.txt 라고 표현 했습니다.
만약 역슬래시를 사용해 경로를 표현하고자 한다면 D:\\test\\신규파일.txt 처럼 역슬래시 2개를 연달아 붙여서 사용합니다.
또 다른 방법으로는 r”D:\test\신규파일.txt” 이라고 표현을 해주면 문자열 앞에 위치한 r 문자(Raw String)와 문자열이 만나 경로를 표현해 주게 됩니다.
이런식으로 표현을 안 해주면 “D:\new\test\신규파일.txt” 처럼 \n 이스케이프 문자가 있을 경우에 줄바꿈 문자로 잘못 판단 되어 엉뚱한 파일 경로로 판단할수 있기 때문입니다.

이번 시간에는 파일 입출력 중 파일 읽고 쓰기의 첫번째 시간으로
파일을 생성하는 방법에 대해 공부해 봤습니다.
다음 시간에는 파일을 쓰기 모드로 열어서 내용을 쓰는 방법에 대해 공부해 보도록 하겠습니다.

이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

34. 파이썬 - 파일 읽고 쓰기(파일 생성)

26. 파이썬 함수와 입출력, 파일처리 방법

26. 파이썬 함수와 입출력, 파일처리 방법

이제부터는 파이썬 함수와 입출력, 파일처리 방법 에 대해 공부해 보겠습니다.
지난 시간까지 공부한 내용을 참고해서 봐주세요~

파이썬 입출력은 프로그래밍 설계와 관련이 있습니다.
프로그램을 만들기 전 동작을 어떻게 진행할 것인지 프로그래머가 설계를 하게 되는데
이 설계 단계에서 가장 중요하게 여기는 부분이 파이썬 입출력 설계 입니다.

함수를 만들 때 특정 프로그램만 사용하는 함수를 만들 것인지 아니면 모든 프로그램이 공통적으로 사용할 수 있게끔 함수를 만들 것인지, 또는 오픈 API 를 공개해서 외부 프로그램들 도 사용 하게끔 할 것 인지 등
이런 모든 부분이 입출력과 연관이 있습니다.

파이썬 함수

파이썬 함수의 정의

믹서기를 사용한다고 가정해 보세요
믹서에 과일 같은 것들을 넣습니다.
그리고 믹서기의 전원을 켜서 안에 들어있는 과일들을 갈아 과일 주스를 만듭니다.
여기서 우리가 믹서기에 넣은 과일들은 ‘입력’이 되는 것이고 과일 주스는 ‘출력'(결과값) 이 되는 것 입니다.
그러면 여기서 믹서기는 무엇 일까요?

26. 파이썬 함수와 입출력, 파일처리 방법
이미지 출처 : 점프투파이썬

여기서 사용되는 믹서기가 지금 공부하려고 하는 함수 와 같은 것 입니다.
입력되는 값을 가지고 어떤 작업을 진행한 뒤에 그 결과물을 출력하는 것.
그것이 함수가 하는 일 이라고 보시면 됩니다.

예전부터 우리는 함수에 대해 공부 한 적이 있지만 함수에 대해서 그닥 깊이 생각해 본 적이 별로 없을 겁니다.
예를 들어서 x = 3y + 2 같은 수식도 함수라고 할 수 있습니다.
하지만 이를 그냥 수학 시간에 배운 그래프 중 하나인 직선 그래프로만 알고 있고
y 값에 따라서 x 출력이 변화하는 함수라고는 생각을 못했을 수 있습니다.

프로그래밍에서 함수는 정말 중요한 요소 입니다.
함수에 대해서는 좀 더 깊이 생각을 해봐야 할 것입니다.

파이썬 함수 왜 사용할까?

프로그래밍을 진행 하다 보면 같은 내용을 반복해서 작성하는 경우가 종종 있습니다.
이럴 때 바로 함수를 사용하면 됩니다.
반복적으로 사용되는 경우가 있다면 ‘반복적으로 사용되는 가치 있는 부분’ 을 하나의 덩어리로 묶어서
a라는 입력 값이 주어지면 b 라는 결과값을 출력하세요~ 라는 식으로 함수로 작성하는 것이 현명한 프로그래머일 것입니다.

파이썬에서 함수를 사용하는 이유 또 한 가지는 우리가 만든 프로그램을 함수, 즉 기능 별로 구분을 해놓으면 프로그램이 어떻게 흘러가는지 알아보기가 쉽습니다.
공장에서 원재료가 공정들을 하나 하나 걸쳐 비로서 하나의 완성품이 나오는 것처럼 프로그램도 입력한 값들이 여러개 의 함수를 거치고 거쳐 우리가 원하는 결과물을 볼 수 있는 것 입니다.
이렇게 되면 프로그램의 흐름도 파악하기가 쉽고 오류가 나도 어떤 부분에서 오류가 났는지 확인하기도 쉽습니다.

파이썬 함수의 구조

파이썬 함수의 구조를 살펴보겠습니다.

Python
def 함수명(매개변수):
    수행할 문장 1
    수행할 문장 2
    수행할 문장 3
    ....

def 뒤에 함수명이 온 것을 보면 알 수 있듯이 def 는 함수를 만들때 사용하는 파이썬 예약어 입니다.
함수명은 함수를 만들 때 우리가 임의로 만들 수 있습니다.
함수명 뒤에 괄호 안에 매개변수를 넣어주는데 이 매개변수가 함수에 입력으로 전달되는 값이라고 보시면 됩니다.
이렇게 함수를 정의한 뒤에 이때까지 공부했던 if, while, for 문 등과 마찬가지로 수행할 문장 1, 2, 3… 을 입력해 주면 됩니다.
아주 간단한 예를 보겠습니다

Python
def mmmm(a, b):
    return a - b

위 예를 살펴보면 함수의 이름은 mmm 이고 a 와 b 두개의 입력값을 받아서
a에서 b를 뺀 결과를 리턴값으로 하라는 예입니다.
여기에서 사용되는 return 은 함수의 결과값을 돌려주라는 명령어입니다.
실제 위 예를 사용해 보겠습니다.

Python
>>> def mmm(a, b):
...     return a -b
...

mmm 이라는 함수가 만들어 졌습니다.
만들어진 mmm 함수를 사용해 보겠습니다.

Python
>>> a = 2
>>> b = 5
>>> c = mmm(a, b)
>>> print(c)
-3

변수 a 에는 2, b 에는 5 를 대입하고 앞에 만든 mmm 함수에 a와 b 를 입력 값으로 넣어 줬습니다.
그리고 변수 c 에는 mmm 함수의 리턴 값을 대입해줬습니다.
마지막으로 print(c) 로 mmm 함수를 적용한 c 의 결과 값을 확인 할 수 있습니다..

이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

26. 파이썬 함수와 입출력, 파일처리 방법