본문 바로가기
Python/파이썬 기초

입출력과 관련된 내장함수(print, open, input) - 파이썬 기초(14)

by 콩돌 2018. 12. 19.
반응형

참고 자료

https://docs.python.org/3/library/functions.html


파이썬 버전 3.7 기준



입출력과 관련된 내장함수


본 포스팅에서 다루는 함수는 다음과 같다.

open(), input(), print() 등.



파일을 열어주는 내장함수


open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, Closefd=True, opener=None)

  ○ 파일을 열고 해당 파일 객체를 반환한다. 파일을 열 수 없을 경우 에러가 발생한다.

    ▷ 파일이 존재 하지 않더라도 쓰기 모드면 파이썬 자체에서 파일을 작성하기도 한다.

  ○ file은 열 파일의 경로를 나타내며, 절대적인 경로('C:\...)와 상대적인 경로(\...\...) 둘 다 지원한다.

  ○ mode는 파일을 열 모드를 설정한다. 

    ▷ 'r' : 파일을 읽기용으로 연다. (기본값)

    ▷ 'w' : 파일을 쓰기용으로 연다. 파일이 존재할 경우 아예 새로 파일을 작성한다.

    ▷ 'x' : 독점적인 파일 만들기용으로 연다. 이미 파일이 존재하는 경우에는 실패한다. -> 좀 더 공부

    ▷ 'a' : 파일을 쓰기용으로 연다. 'w'와는 다르게 파일이 존재하는 경우는 파일의 끝에 이어붙인다.

    ▷ 'b' : 바이너리 모드로 연다.

    ▷ 't' : 텍스트 모드로 연다. (기본값)

    ▷ '+' : 읽기 및 쓰기용으로 디스크 파일을 연다.

    ▷ 'U' : 유니버설 줄 넘김 모드로 연다.

    ▷ 기본모드는 텍스트 읽기모드이며, 조합하여 'rt'로 표현 가능하다.

    ▷ 바이너리 쓰기 모드를 표현하고자 할때는 'w+b'를 쓰며 파일을 열면서 0바이트로 자르고, 읽기 모드를 쓰고자 할때는 'r+b'이며 자르지 않고 파일을 연다.

    ▷ 여기서 알 수 있듯이, 파이썬은 바이너리와 텍스트 입출력을 구별한다. 바이너리 모드는 디코딩 없이 bytes 객체로 돌려주며, 텍스트모드에서는 파일 내용이 encoding인자로 입력된 타입을 기반으로 str로 반환된다.

  ○ buffering은 버퍼링 정책을 설정하는데 사용되는 정수이다. 

    ▷ 버퍼링을 끌 경우 0을 입력하며(바이너리 모드에서만 사용 가능), 버퍼링을 킬 경우 1을 전달하면된다(텍스트 모드에서만 사용 가능).

    ▷ 고정 크기 청크 버퍼를 선택하려면 그 크기를 바이트 단위로 표시한 정수(1보다 큰 값)을 입력하면 된다.

    ▷ buffering 인자가 입력되지 않을 경우 

  ○ encoding은 인코딩 혹은 디코딩하는데 사용하는 인코딩의 이름이다.



입력과 관련된 내장함수


input([prompt])

  ○ 터미널 혹은 인터프리터 상에 입력을 받을 수 있게 해주는 함수이다.

  ○ prompt가 입력될 경우 입력 앞에 prompt가 나타난다.

  ○ readline 모듈과 같이 사용될 경우 정교한 줄편집 및 히스토리 기능을 제공할 수 있다.


사용 예)

In[10]: a=input('Please input your word')

Please input your word>? Ok, I will.

In[11]: a

Out[11]: 'Ok, I will.'


In[12]: a = input()

>? Ok

In[13]: a

Out[13]: 'Ok'



출력과 관련된 내장함수


print(object, sep='', end='\n', file=sys.stdout, flush=False)

  ○ object를 텍스트 스트림 파일로 인쇄한다.

    ▷ 입력되는 오브젝트는 여러 객체를 입력하는 것이 가능하다.

  ○ sep은 입력된 여러 개의 오브젝트를 구분을 위해 쓰이는 구분자이다.

  ○ 입력된 마지막 오브젝트의 끝에는 키워드 인자인 end가 붙는다. 

  ○ file인자에는 write(string) 메서드를 가진 객체이어야 한다.

    ▷ 입력이 안됬을 경우 sys.stdout가 기본 값으로 들어가며 터미널창에 입력된 내용을 출력한다. 


사용 예) 

In[2]: print('This ', 'is ', 1, sep='', end=' '); print('And, ', 'This ', 'is ', 2, sep='')

This is 1 And, This is 2


In[3]: print('This ', 'is ', 1, sep='',); print('And, ', 'This ', 'is ', 2, sep='')

This is 1

And, This is 2


In[4]: print('This ', 'is ', 1, sep='\n',); print('And, ', 'This ', 'is ', 2, sep='')

This 

is 

1

And, This is 2



반응형

댓글