input 함수를 이용하여 사용자에게 값을 입력받을 수 있다. Java의 경우 사용자 입력을 받는 과정이 간단하지만은 않다. 차라리 C/C++이 훨씬 더 간편할 정도이다. 하지만, 파이썬은 아래와 같이 매우 직관적이고 간결한 문법을 제공한다.
>>> a = input()
Life is too short, you need python
>>> a
'Life is too short, you need python'
이와 같이 사용자의 입력을 모두 저장한다. C/C++은 띄어쓰기가 있는 경우 scanf나 cin을 사용할 수 없고 get과 같은 함수를 이용해야 한다. 그러나 파이썬의 경우, 어떤 경우에나 input만 쓰면 된다. 특히, 사용자 입력을 받을 때에는 어떤 값을 입력해야 하는지 알려주기 위해 출력문과 함께 쓰는 경우가 많은데, 파이썬에서는 이것도 input 함수에서 처리해준다.
>>> number = input("숫자를 입력하세요: ")
숫자를 입력하세요: 3
>>> print(number)
3
참고로, 사용자 입력으로 받은 숫자는 문자열로 취급된다. 즉, 사용자 입력으로 어떤 값을 받든 항상 문자로 인식한다.
print의 사용법은 이전에도 많이 다루었으니, 파이썬에서 추가된 몇 가지 편리한 기능들에 대해 알아보기로 하자.
① 여러 문자열을 입력 값으로 전달
>>> print("life" " is" " too short")
life is too short
>>> print("life"+" is"+" too short")
life is too short
② 문자열 띄어쓰기
>>> print("life", "is", "too short")
life is too short
③ 한 줄에 결과 값 출력
>>> for i in range(10):
... print(i, end=' ')
...
0 1 2 3 4 5 6 7 8 9 >>>
파이썬의 파일 입출력에서 가장 두드러지는 특징은 파일을 위한 별도의 자료형이 없다는 것이다. Java의 경우, 파일을 읽기 위한 객체와 쓰기 위한 객체가 모두 필요하며, 심지어 확장자 별로 사용해야 할 객체도 다르다. 파이썬에서는 이러한 내용을 고려할 필요가 없다.
VS Code에 아래의 명령을 입력한 후 실행해보자.
f = open("새파일.txt", 'w')
f.close()
이제 프로그램을 실행한 디렉토리에 가보면 새로운 파일이 생성된 것을 확인해볼 수 있다.
open은 파일의 이름과 파일 열기 모드를 입력인자로 받는다. 파일 열기 모드에는 r, w, a가 있다.
위와 같이 새로운 파일을 쓰기 모드로 열면 파일을 생성하지만, 기존 파일을 쓰기 모드로 열면, 기존의 내용이 모두 사라진다는 점에 유의해야 한다. 파일을 저장하는 경로를 바꾸고 싶으면, 파일의 이름에 저장 경로를 포함하여 작성하면 된다.
f = open("C:/doit/새파일.txt", 'w')
f.close()
참고로, close 명령은 C/C++, Java에서와 마찬가지로 생략해도 당장은 문제가 없다. 하지만, 나중에 다시 파일을 열 때, 에러가 발생할 수 있다. 그러므로 파일을 열었다면, 작업이 종료된 시점에 반드시 닫아주어야 한다.
※ with 키워드
open한 file을 자동으로 close하도록 설정하기 위해 with문을 사용할 수 있다. with문은 open한 파일을 as 뒤에 적인 파일 객체에 담고, with 블록이 종료되면, 열린 파일 객체를 자동으로 닫는다.with open("foo.txt", "w") as f: f.write("Life is too short, you need python")
파일을 생성했으니, 이제 내용을 적어보자.
f = open("C:/doit/새파일.txt", 'w')
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
f.write(data)
f.close()
① readline
# readline_test.py
f = open("C:/doit/새파일.txt", 'r')
line = f.readline()
print(line)
f.close()
f = open("C:/doit/새파일.txt", 'r')
while True:
line = f.readline()
if not line: break
print(line)
f.close()
② readlines
f = open("C:/doit/새파일.txt", 'r')
lines = f.readlines()
for line in lines:
print(line)
f.close()
③ strip
f = open("C:/doit/새파일.txt", 'r')
lines = f.readlines()
for line in lines:
line = line.strip() # 줄 끝의 줄 바꿈 문자를 제거한다.
print(line)
f.close()
④ read
f = open("C:/doit/새파일.txt", 'r')
data = f.read()
print(data)
f.close()
⑤ for문과 함께 사용하기
f = open("C:/doit/새파일.txt", 'r')
for line in f:
print(line)
f.close()
위에서 설명한대로, 파일에 내용을 추가하려면 w가 아닌 a모드로 파일을 열면된다.
f = open("C:/doit/새파일.txt",'a')
for i in range(11, 20):
data = "%d번째 줄입니다.\n" % i
f.write(data)
f.close()