기존의 텍스터 데이터를 문자열로 나타낸 후 변수에 저장할 때, 변수에 저장되는 데이터는 컴퓨터 메모리에 저장된다. 메모리에 저장되는 데이터는 로드 및 액세스 속도가 빠르다는 장점이 있지만 일정 전원이 공급되어야만 데이터가 보존된다. 즉 프로그램이 실행되는 동안에만 데이터가 저장된다
이러한 데이터를 영구적으로 보존할 필요가 있기 때문에 보조기억장치에 데이터를 저장하고 이를 파일이라고 한다
디스크 상에 저장된 파일을 읽고, 수정하고, 또는 데이터를 저장하기 위해선 가장 먼저 파일을 열어야 한다
파일을 열고 객체로 만들어 주는 작업을 수행한다
f = open("hello.txt", "w")
# open(파일명, 파일모드)
# 파일을 열고 파일 객체를 반환
for i in range(10):
f.write("안녕")
# write()메서드로 '안녕'을 10번 쓴다
f.close()
# 작업이 끝나면 close() 메서드로 닫아준다 ** 필수
print("완료!")
write에서 hello.txt
파일을 만들었다. 정상적으로 만들어 졌다면 실행한 경로에 파일이 생성되었을 것이다
이번에는 생성한 파일을 읽어본다
with open("hello.txt", "r") as f:
print(f.read())
with
구문을 사용해 파일을 열고 파일 객체를 f
로 받아서 f.read()
를 통해 내용을 읽었다. 여기서 f.close()
를 호출하지 않은 이유는 with
를 통해 open
한 객체는 with
문이 종료될 때 자동으로 close
되는 것이 보장되기 때문이다
시스템 리소스의 안정적인 사용을 위해 with
를 활용하는 것을 권장한다
f.read()
: 파일을 읽음f.readline()
: 파일을 한 줄씩 읽음f.readlines()
: 파일 안의 모든 줄을 읽어 그 값을 리스트로 반환f.write(str)
: 파일에 쓴다 문자열 타입을 인자로 받음f.writelines(str)
: 파일에 인자를 한 줄씩 쓴다f.close()
: 파일을 닫음f.seek(offset)
: 해당 파일의 위치(offset)를 찾아 파일의 커서를 옮긴다. 파일의 처음 위치는 0f.tell()
: 현재 커서의 위치를 반환
예제
위에서 만든 파일 이어서 사용
quotes = ["\n안녕하세요.\n", "반갑습니다.\n", "오랫만입니다.\n"]
with open("hello.txt", "a") as f:
f.writelines(quotes)
with open('hello.txt', 'r') as f:
hello = f.readlines()
print(f'위치 : {f.tell()}')
print(hello)
print("--------------------------")
f.seek(10)
print(f'위치 : {f.tell()}')
출력
위치 : 115
['안녕안녕안녕안녕안녕안녕안녕안녕안녕안녕\n', '안녕하세요.\n', '반갑습니다.\n', '오랫만입니다.\n']
----------------------------------------------------
위치 : 10
파일을 다룰 때 중요한 것이 파일이 저장된 위치이다. 파일이 어느 디렉터리에 저장되어 있는 가는 매우 중요하다
파일을 저장할 때 C:\Users\person\Documents
와 같은 경로가 나오는데 이 경로의 최상위 폴더를 루트 디렉터리(root directory)라고 한다
C:\
/
파이썬에서 지원하는 디렉터리 관련 표준 라이브러리는 세 가지가 있다
import
해서 디렉터리 관련 작업을 한다# 현재 실행되고 있는 파이썬 실행 파일의 디렉터리 반환
import sys
sys.executable
출력
'/opt/conda/bin/python'
실행 파일은 파이썬이 실행될 때 참조하는 것으로 운영 체제 및 파이썬 인터프리터가 참조하는 경로이다. 실제로 프로그래밍을 할 때는 이런 항목을 확인하지는 않는다. 우리에게 필요한 것은 pip
나 conda
명령어를 통해 설치한 라이브러리 관련 파일의 위치를 확인하는 것이다
# import할 때 불러 오는 모듈들이 위치한 경로
sys.path
출력
['/opt/conda/lib/python39.zip',
'/opt/conda/lib/python3.9',
'/opt/conda/lib/python3.9/lib-dynload',
'',
'/opt/conda/lib/python3.9/site-packages',
'/opt/conda/lib/python3.9/site-packages/IPython/extensions']
개념
.py
함수
sys.path
: 현재 폴더와 파이썬 모듈들이 저장되는 위치를 리스트 형태로 반환sys.path.append()
: 자신이 만든 모듈의 경로를 append
함수를 이용해서 추가, 추가한 디렉터리에 있는 파이썬 모듈을 불러와 사용할 수 있다os.chdir()
: 디렉터리 위치 변경os.getcwd()
: 현재 자신의 디렉터리 위치를 반환os.mkdir()
: 디렉터리 생성os.rmdir()
: 디렉터리 삭제 (단, 디렉터리가 비어있을 경우)glob.glob()
: 해당 경로 안의 디렉터리나 파일들을 리스트 형태로 변환os.path.join()
: 경로(path)를 병합하여 새 경로 생성os.listdir()
: 디렉터리 안의 파일 및 서브 디렉터리를 리스트 형태로 반환os.path.exists()
: 파일 혹은 디렉터리의 경로 존재 여부 확인os.path.isfile()
: 파일 경로의 존재 여부 확인os.path.isdir()
: 디렉터리 경로의 존재 여부 확인os.path.getsize()
: 파일의 크기 확인