[python] #7. 입력과 출력

9671 단어 파이썬파이썬

사용자로부터 입력을 받는 함수는 raw_input() 을 사용하면 된다.

결과를 출력해주기 위해 str 클래스가 제공하는 여러 메소드를 사용할 수 있는데, help(str) 을 실행하여 자세히 알아보자.

또 다른 입출력 형식은 파일을 다루는 것이다.

사용자로부터 입력받기

def reverse(text):
  return text[::-1]
  
def is_palindrome(text):
  return text == reverse(text)
  
something = raw_input("Enter text: ")
if is_palindrome(something):
  print 'Yes, It is a palindrome'
else:
  print 'No, It is a palindrome'
  
결과

$ python io_input.py
Enter text: sir
No, it is not a palindrome
$ python io_input.py
Enter text: madam
Yes, it is a palindrome

raw_input() 함수는 인수로 넘겨받은 문자열을 화면에 표시하고 사용자의 입력 후 엔터 키를 누를 대까지 기다린다.

파일 입/출력

입/출력을 위해 파일을 열고 사용하려면 file 클래스의 객체를 생성한 후 read, readline, write 와 같은 메소드를 적절히 활용하면 된다.
모두 마친 후에는, close 메소드를 호출하여 파일을 다 사용했다는 것을 알려 주어야 한다.

poem = '''\
  시
프로그래밍은 재밌다.
'''

# 쓰기 모드로 오픈
f = open('poem.text', 'w')
# 파일에 글을 쓴다.
f.write(poem)
# 파일을 닫는다.
f.close()

# 만약 모드를 명시하기 않으면 읽기 모드가 기본값으로 설정된다.
f = open('poem.text')
while True:
  line = f.readline()
  # 길이가 0이면 EOF 이다.
  if len(line) == 0:
    break;
  # 'line' 은 파일의 각 끝까지 읽어 각 라인을 새 라인으로 읽어온다.
  print line,
  
# 파일을 닫는다.
f.close()

결과

  시
프로그래밍은 재밌다.

open 함수를 이용할 때 다음 모드들을 지정해주면 된다.

모드지정
일기 모드r
쓰기 모드w
덧붙임 모드a
텍스트 모드t
바이너리 모드b

Pickle

파이썬은 pickle 이란 기본 모듈을 제공하는데, 어떤 파이썬 객체든 파일로 저장해 두었다 나중에 불러와서 사용할 수 있는 모듈이다. 이것을 객체를 영구히 저장해 둔다고 한다.

# 저장할 객체의 파일 이름
shoplistfile = 'shoplist.data'

shoplist = ['apple', 'mango', 'carrot']
# 파일에 쓴다
f = open(shoplistfile, 'wb')
# 파일에 객체를 보낸다
pickle.dump(shoplist, f)
f.close()

# 변수를 없앰
del shoplist
# 저장된 파일을 다시 불러옴
f = open(shoplistfile, 'rb')
# 파일로부터 객체를 로드
storedlist = pickle.load(f)
print storedlist

결과

$ python io_pickle.py
['apple', 'mango', 'carrot']

파일에 객체를 저장하기 위해서는 바이너리 모드로 열어서 읽고 써야한다.
pickle 모듈의 dump 함수를 호출하여 준다. 이 과정을 피클링이라 한다.

그리고 pick 모듈의 load 함수를 이용하여 파일에 저장된 객체를 불러온다.
이 과정을 언피클링이라 한다.

유니코드

파일에 쓸 때 영어가 아닌 다른 언어로된 문자를 읽고 쓰고 싶은 경우 unicode 형식을 이용할 필요가 있다. 이는 문자 u 를 앞에 붙여주면 된다.

비 영어권 언어를 다룰 때 str 대신 unicode 형식을 사용하여 문자를 다루어 주어야 한다.
그러나 인터넷 상의 다른 컴퓨터와 송수신 시 가능한 UTF-8 형태로 주어야 한다. 다음과 같다.

# encoding=utf-8
import io
f = io.open("abc.txt", "wt", encoding="utf-8")
f.write(u"Imagine non-English language here")
f.close()
text = io.open("abc.txt", encoding="utf-8").read()
print text

좋은 웹페이지 즐겨찾기