[Python] 파일

ㅎㅎ·2021년 5월 20일
0

Python

목록 보기
14/27




📌 파일

- 파일 생성하기

  • 밑의 코드를 작성한후 실행하면 실행한 디렉토리에 새로운 파일이 생긴다.
  • 파일을 생성하기 위해 파이썬 내장 함수 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문을 사용하면 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모듈을 사용해서 매개변수를 직접 줄 수 있다. 이 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.pyargv[0], aaaargv[1], bbbargv[2], cccargv[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  

0개의 댓글