TigerCow.Door


안녕하세요. 문범우입니다.

오늘은 파이썬에서의 사용자의 입력과 출력, 그리고 파일IO(Input / Output)에 대해서 알아보도록 하겠습니다.



1. 사용자 입력


우리가 평소에 사용하는 프로그램들에서는 사용자의 입력을 받아서 이에 대한 값을 바탕으로 특정 함수를 통해 결과값을 출력합니다.

예를 들어 지난 포스팅들에서 학습한 내용을 바탕으로, 구구단을 출력하는데 특정 숫자에 대한 구구단이 아닌

사용자가 확인하고 싶어하는 숫자에 대한 구구단을 출력하는 것입니다.


이럴 때, 사용자가 확인하고 싶어하는 숫자는 어떻게 입력받고 이를 어떻게 처리할까요?


먼저 사용자에게 입력을 요청하는 함수는 input() 입니다.

이것은 아래와 같이 사용됩니다.



input()을 통해 입력 받은 값을 a라는 변수에 집어넣은 것입니다.

여기서 주의해야 할 점이 있습니다.

input은 입력되는 모든 것을 문자열로 취급합니다. 즉, 숫자를 입력받았어도 이것을 바로 산술계산으로 사용할 수 없습니다.



위의 코드와 같이 a라는 변수가 int(정수형) 형태가 아닌 str(문자열) 형태이기 때문에 오류가 발생합니다.

이럴때는 아래 코드와 같이 형변환을 통해서 사용하면 됩니다.



추가로, 입력을 받을 때 질문을 함께 던지고 싶을 땐 어떻게 할까요?

단순히 입력을 받는 것이 아니라, 예를 들어 '이름을 입력하세요.', '학년을 입력하세요.' 등의 질문을 던지는 것입니다.

이러한 경우는 아래 코드와 같이 input() 에서 괄호 안에 질문을 작성하면 됩니다.




2. 출력


이번에는 출력에 대해서 알아보겠습니다.

우리는 그동안 print문을 통해 출력을 하였습니다.

이렇게 이용해왔던 print에 대해서 조금 더 자세히 살펴볼 것입니다.


먼저, print에서 큰따옴표로 둘러싸인 문자열은 + 연산과 동일합니다.

아래 두개의 print문을 확인해보면 완전히 동일한 결과 값을 출력하는 것을 알 수 있습니다.




그리고 문자열 간에 콤마(,)를 이용하여 출력하면 콤마의 위치에 띄어쓰기가 되는 것을 확인할 수 있습니다.




그런데 자세히 살펴보면, print문을 이용하여 출력하면 자동으로 줄바꿈이 되는 것을 볼 수 있습니다.

예를 들어 반복문을 통해 print문을 이용하여 1~5까지 숫자를 출력해보면 어떻게 될까요?




위의 코드와 같이 1부터 5의 숫자가 한 줄에 하나씩 출력됩니다.

그런데 이것을 모두 한줄에 표현하고 싶을 때는 어떻게 할까요?

print문에서는 맨 마지막 문자열의 초기값이 줄바꿈으로 되어 있습니다.

따라서 맨 마지막 문자열을 설정해주면 되는데,

print(출력할 내용, end = '') 와 같이 맨 마지막 문자열을 'end =' 을 이용해서 설정하면 됩니다.

아래 코드에서는 맨 마지막 문자열을 띄어쓰기로 설정하였습니다.



그리고 아래의 코드에서는 맨 마지막 문자열을 별표(*)로 설정하였습니다.




3. 파일 IO(Input / Output)


이번에는 컴퓨터에 있는 파일에 대한 방법입니다. 직접 파일을 만들거나, 파일을 읽고 쓰는 방법입니다.


기본적으로 파일을 여는 함수는 아래의 형태를 갖게 됩니다.


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


그리고 파일 열기 모드는 총 3개가 존재합니다.


r : 읽기모드, 파일을 읽기만 할 때 사용

w : 쓰기모드, 파일에 내용을 쓸 때 사용

a : 추가모드, 파일의 마지막에 새로운 내용을 추가할 때 사용


여기서 자신이 파일 열기모드를 w(쓰기모드)로 열었는데, 파일 경로 및 이름에, 자신이 열고자 하는 파일의 경로와 이름을 함께 작성하는데 해당 경로에 일치하는 이름이 없다면 새로운 파일이 생성됩니다.

또한 파일 경로를 설정하지 않고 파일의 이름만 설정하면 현재 프로그램이 실행된 디텍토리에 파일이 생성됩니다.



4. 파일 쓰기


먼저 w(쓰기모드)를 통해 파일의 경로와 이름을 설정하고 파일을 생성해 봅니다.




그리고 파일의 경로를 지정하지 않고 파일을 생성해 보았습니다.





그럼 이번에는 파일을 쓰기모드로 열어서 직접 파일에 내용을 작성해 보도록 하겠습니다.

open() 을 통해 파일을 열어 해당 객체에 write를 통해 작성하면 됩니다.

아래 예시를 통해 확인하겠습니다.

해당 부분 부터는 에디터를 이용해서 코딩을 진행합니다.(제가 사용하는 에디터는 서브라임텍스트3 입니다.)




그리고 에디터로 작성한 파이썬 파일을 실행시켜보면

아래 사진과 같이 '새파일.txt' 파일에 내용이 입력되었음을 확인할 수 있습니다.



또한 a(추가모드)를 이용하면 원래 파일에 있던 내용을 그대로 보존하고 그 뒤에서 부터 내용을 작성할 수 있습니다.



5. 파일 읽기


이번에는 파일 읽기를 살펴보겠습니다.

파일 읽기는 r 모드를 이용해서 진행됩니다.

위에서 작성한 파일을 읽어보도록 합니다.




위와 같이 에디터에서 코드를 작성하여 실행하면 아래와 같은 결과가 출력됩니다.




readline() 함수는 파일에서 한 줄을 읽어내는 함수 입니다.

그럼 해당 함수를 이용하여 파일의 모든 내용을 읽으려면 아래와 같이 코드를 작성하면 될 것 입니다.




파일의 모든 내용을 읽는 함수는 따로 존재하기도 합니다.

바로 readlines() 라는 함수입니다.

해당 함수는 파일의 모든 내용을 읽어서 각 줄을 리스트의 요소로 하여 리스트 객체를 반환합니다.




또한 read() 라는 함수도 존재합니다.

read() 함수는 파일의 내용 전체를 읽어서 이를 문자열로 반환합니다.




이렇게 하여 이번에는 사용자의 입출력과 파일 IO에 대해서 알아보았습니다.

파일 IO에서 처음으로 에디터를 사용하며 실습을 진행했는데,

해당 부분에서 오류가 발생하거나 부딪히는 점이 있으시다면 언제든 댓글을 남겨주세요 :)

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요