open
을 사용했으며 "파일 이름"과 "파일 열기 모드"를 입력값으로 받고 결괏값으로 파일 객체를 돌려준다.f = open("file.txt", 'w') # 파일이름, 파일 열기 모드
f.close()
파일 열기 모드
r
: 읽기 모드 - 파일을 읽기만 할때 사용w
: 쓰기 모드 - 파일에 내용을 쓸 때 사용a
: 추가모드 - 파일의 마지막에 새로운 내용을 추가시킬때 사용
파일을 쓰기 모드로 열면 해당 파일이 이미 존재할 때 원래 있던 내용이 모두 사라지고, 해당 파일이 존재하지 않으면 새로운 파일이 생성된다. 위 코드에서는 file.txt
라는 쓰기 모드인 w
로 열었기 때문에 file.txt
라는 이름의 새로운 파일이 현재 디렉토리에 생성됐다.
만약 file.txt파일을 특정 디렉토리(ex c:/doit
)에 생성하고 싶다면, 다음과 같이 경로를 적어주면 된다.
f = open("C:/doit/file.txt", 'w')
f.close() # 열려있는 파일 객체를 닫아주는 역할 # 생략가능하나 close()를 사용해서 직접 닫아주는 것이 좋음.
#기존 방법은 모니터 화면에 출력하는 방법
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
print(data)
#이 방법은 모니터 화면 대신 파일에 결괏값을 적는 방법
f = open("새파일.txt", 'w')
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
f.write(data) # 차이점
f.close()
➡️ 두 방법의 차이는 print
대신 파일 객체 f의 write함수
를 사용한 것.
1. readline()함수 이용하기
f = open("새파일.txt", 'r')
line = f.readline()
print(line)
f.close()
➡️ 위 코드를 실행하면 새파일.txt
를 읽기 모드로 연 후 readline()
을 사용해 파일의 첫 번째 줄을 읽어 출력해준다.
f = open("새파일.txt", 'r')
while True:
line = f.readline()
if not line: break
print(line)
f.close()
➡️ 첫 번째 줄이 아닌 모든 줄을 읽고 싶다면, 코드를 while:True 로 수정해 한줄씩 출력하다가 읽을 줄이 없을때 break를 실행한다. (readline()
은 더 이상 읽을 줄이 없을 경우 빈 문자열을 리턴함)
2. readlines() 함수 사용하기
f = open("새파일.txt", 'r')
lines = f.readlines()
for line in lines:
print(line)
f.close()
➡️ readlines 함수
는 파일의 모든 줄을 읽어서 각각의 줄을 요소로 갖는 리스트로 돌려준다. 따라서 위 코드에서 lines는 ["1번째줄입니다.","2번째줄입니다," ......."10번째 줄입니다"]가 된다.
3. read 함수 사용하기
f= open("새파일.txt", 'r')
data = f.read()
print(data)
f.close()
➡️ f.read()
는 파일의 전체 내용을 문자열로 돌려준다. 즉 data는 새파일.txt의 전체 내용이다.
w
)로 파일을 열 때, 이미 존재하는 파일을 열먼 그 파일의 내용이 모두 사라지게 된다. 하지만 원래 있던 값을 유지하고 내용을 추가해야한다면 파일을 추가모드(a
)로 열면 된다. f= open("새파일.txt",'a') # 추가 모드
for i in range(11, 20):
data = "%d번째 줄입니다.\n" % i
f.write(data)
f.close()
➡️ 위 코드를 저장하고 실행시키면, 새파일.txt
을 확인해보면 원래 있던 애용뒤에 새로운 내용이 추가되었다.
with문
을 사용하면 with블록을 벗어나는 순간 열린 파일 객체 f가 자동으로 close된다. # 기존 방법 open하고 close하기
f = open("foo.txt", 'w')
f.write("Life is too short, you need python")
f.close()
#새로운 방법
with open("foo.txt", "w") as f:
f.write("Life is too short, you need python")
sys모듈
을 사용해서 매개변수를 직접 줄 수 있다. 이 sys모듈을 사용하려면 import
명령어를 사용해야한다.#pp.py
import sys
args = sys.argv[1:]
for i in args:
print(i)
>>> python pp.py aaa bbb ccc #매개변수 직접 주기
#결과
aaa
bbb
ccc
➡️ 파일을 만들어 저장한 후에, 명령 프롬프트창에서 매개변수를 직접 주어 실행하면 결괏값을 얻을 수 있다. 여기서 중요한 점은
pp.py
는argv[0]
,aaa
는argv[1]
,bbb
는argv[2]
,ccc
는argv[3]
이다.
# 다른 예시
#pp.py
import sys
args = sys.argv[1:]
for i in args:
print(i.upper(), end=' ') #대문자로 바뀜
>>> python pp.py i wanna go home rn #매개변수 직접 주기
#결과
I WANNA GO HOME RN