In [ ]:
# -*- coding: utf-8 -*-
from sys import argv
script, user_name = argv
prompt = '> '
# Fix Python 2.x.
try:
input = raw_input
except NameError:
pass
print("안녕 {}, 나는 {} 스크립트야.".format(user_name, script))
print("몇 가지 질문을 할게.")
print("{}, 나를 좋아해?".format(user_name))
likes = input(prompt)
print("{}, 어디에 살아?".format(user_name))
lives = input(prompt)
print("무슨 종류의 컴퓨터를 갖고 있어?")
computer = input(prompt)
print("""
좋아, 나를 좋아하냐는 질문에는 '{}'.
'{}'에 살아. 어딘지는 모르겠지만.
그리고 '{}' 컴퓨터를 가졌어. 멋져
""".format(likes, lives, computer))
argv¶
커맨드라인에서 스크립트를 실행할 때 받아야할 실행인자
위에서는 user_name이다.
raw_input( )¶
스크립트가 실행될 때 정보를 얻고 싶을 때 사용
In [ ]:
likes = input(prompt)
lives = input(prompt)
computer = input(prompt)
파일 읽기¶
다음 파일을 만들자.
- ex15.py
- ex15_sample.txt
ex15_sample.txt
파일에 쓴 내용입니다.
이건 정말로 멋져요.
재미로 가득 차 있어요.
ex15.py
In [ ]:
# -*- coding: utf-8 -*-
from sys import argv
# 실행인자
script, filename = argv
# Fix Python 2.x.
try:
input = raw_input
except NameError:
pass
# 파일을 열어라.
txt = open(filename)
print("파일 {}의 내용:".format(filename))
print(txt.read())
print(("파일 이름을 다시 입력해 주세요."))
file_again = input(">")
txt_again = open(file_again)
print(txt_again.read())
스크립트를 실행하면 다음과 같다.¶
파일 열기와 닫기¶
In [ ]:
open(filename) # 파일을 다 썼으면, close()를 사용해서 닫아야한다. 닫는 것도 중요하다.
In [ ]:
txt = open(filename)
txt.close()
파일 객체(file object)를 만든다.
파일 객체는 테이프나 DVD 재생기처럼 'Only read'
- 파일 자체는 아니다.
ex16.py 스크립트를 만들자¶
In [ ]:
# -*- coding: utf-8 -*-
from sys import argv
script, filename = argv
print("{} 파일을 지우려 합니다.".format(filename))
print("취소하려면 CTRL-C를 누르세요.")
print("진행하려면 리턴을 누르세요.")
# input generate
try:
input = raw_input
except NameError:
pass
input("?")
print("파일 여는 중...")
target = open(filename, 'w')
print("파일 내용을 지웁니다. 안녕히!")
target.truncate()
print("이제 세 줄에 들어갈 내용을 묻겠습니다.")
line1 = input("1줄: ")
line2 = input("2줄: ")
line3 = input("3줄: ")
print("이 내용을 파일에 씁니다.")
target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")
print("마지막으로 닫습니다.")
target.close()
실행하면 다음과 같다.¶
문자열, 포맷, 탈출 순서열을 사용하여 target.write()¶
6번 → 1번으로 줄이기
In [ ]:
# -*- coding: utf-8 -*-
from sys import argv
script, filename = argv
print("{} 파일을 지우려 합니다.".format(filename))
print("취소하려면 CTRL-C를 누르세요.")
print("진행하려면 리턴을 누르세요.")
# input generate
try:
input = raw_input
except NameError:
pass
input("?")
print("파일 여는 중...")
target = open(filename, 'w')
print("파일 내용을 지웁니다. 안녕히!")
target.truncate()
print("이제 세 줄에 들어갈 내용을 묻겠습니다.")
line1 = input("1줄: ")
line2 = input("2줄: ")
line3 = input("3줄: ")
print("이 내용을 파일에 씁니다.")
## 수정된 부분
target.write("{} \n {} \n {} \n".format(line1,line2,line3))
print("마지막으로 닫습니다.")
target.close()
In [ ]:
open(filename, 'w') # write mode
open(filename, 'r') # read mode / Default
open(filename, 'a') # append mode
open(filename, 'm') # modifier mode
파일을 복사하기¶
ex17.py 스크립트를 만들자¶
In [ ]:
# -*- coding: utf-8 -*-
from sys import argv
from os.path import exists
script, from_file, to_file = argv
print("{}에서 {}로 복사합니다.".format(from_file, to_file))
in_file = open(from_file)
indata = in_file.read()
print("입력 파일은 {}바이트입니다.".format(len(indata)))
# exists → 파일이 있으면 True, 없으면 False 반환
print("출력 파일이 존재하나요? {}".format(exists(to_file)))
print("준비되었습니다. 계속하려면 리턴 키를, 취소하려면 CTRL-C를 누르세요.")
# input generate
try:
input = raw_input
except NameError:
pass
input()
out_file = open(to_file, 'w')
out_file.write(indata)
print("좋습니다. 모두 완료되었습니다.")
out_file.close()
in_file.close()
실행하면 다음과 같다.¶
echo¶
위처럼 파일을 만들 수 있다.
cat¶
파일을 화면에 출력하는 가장 쉬운 방법
cat은 파일을 이어 붙이는데 쓰는 오래된 명령
In [ ]:
in_file = open(from_file)
indata = in_file.read()
위 코드를 아래와 같이 수정하면, indata.close()
입력하면 에러가 발생한다.¶
In [ ]:
indata = open(from_file).read()