os 패키지
>>> import os
>>>
>>> os.getcwd()
'/Users/brianoverland'
>>> os.chdir('Documents')
>>> os.path.isfile('pythag.py')
True
>>> os.remove('pythag.py')
>>> os.path.isfile('pythag.py')
False
1. 입력 디렉토리로 이동(/Users/brianoverland)
2. 하위 디렉토리(Documents) 로 이동
3. pythag.py 파일 존재 유무 확인 후 제거
4. pythag.py 삭제 확인
파일 메서드
함수 혹은 메서드 | 설명 |
file = open(name, mode) | 파일을 읽기/쓰기 위해 연다. * 모드 : w(쓰기), r(읽기), ?b(바이너리 모드) r, w 모드에 + 기호를 추가하면 읽기/쓰기 모두 가능해짐 |
str = file.readline(size=-1) | 텍스트-파일 읽기 연산. 텍스트의 다음 줄을 개행 문자가 나올 때까지 읽어서 문자열로 반환. 문장의 끝에 나타나는 개행문자는 반환된 문자열의 일부이며, 한 가지 상황을 제외하고는 최소한 1개 이상의 개행 문자가 반환된다. 한 가지 예외 상황인 파일의 끝(EOF)에 도달한 경우에는 빈 문자열을 반환한다. |
list = file.readlines() | 텍스트-파일 읽기 연산. 파일 안의 모든 텍스트를 읽어서 텍스트 1줄이 각각의 항목으로 구성된 리스트를 반환한다. 마지막 줄이 아니라면 모든 텍스트 줄의 마지막 문자는 개행 문자라고 가정할 수 있다. |
str = file.read(size=-1) | 바이너리-파일 읽기. 하지만 텍스트 파일과 함께 사용할 수도 있다. 파일의 내용을 읽고 문자열로 반환한다. size 인수는 읽을 바이트 개수를 제어한다. (Default) -1 로 설정하면 모든 내용을 읽어서 반환. 텍스트 모드에서 size 인수는 바이트가 아니라 문자의 개수를 의미한다. 바이너리 모드에서 반환된 문자열은 반드시 바이트의 뭉치로 보아야 한다. 실제 텍스트 문자열은 아니다. |
file.write(text) | 텍스트 혹은 바이너리 쓰기 연산. 쓰기를 한 반이트(혹은 텍스트 모드에서는 문자) 개수인 문자열의 길이를 반환한다. 바이너리 모드에서 문자열은 바이트 문자열이 아닌 데이터를 지니는 경우가 많을 것이다. 이런 데이터는 쓰기 전에 반드시 bytes 문자열이나 bytearray 포맷으로 변환해야 한다. 텍스트 모드에서 이 메서드나 writelines는 개행 문자를 자동으로 입력하지 않는다. |
file.writelines(str_list) | 주로 텍스트 모드에서 사용하는 쓰기 연산. 나열된 문자열을 입력한다. 인수는 입력할 텍스트 문자열 리스트다. 이 메서드는 입력할 데이터에 개행 문자를 입력하지 않는다. 그러므로 리스트의 각 항목을 별도의 줄로 인식하고 싶다면 개행 문자를 직접 입력해야 한다. |
file.writable() | 파일을 수정할 수 있으면 True를 반환한다. |
file.seek(pos, orig) | 파일 안의 파일 포인터를 지시한 위치로 이동한다. 임의 접근이 지원되면 이 메서드는 파일 포인터를 다음 위치(orig)에서 양수 혹은 음수 오프셋(pos)만큼 이동시킨다. org는 다음 셋 중 하나다. 0 - 파일의 시작 지점 1 - 현재 위치 2 - 파일의 끝 지점 |
file.seekable() | 파일 시스템이 임의 접근을 제공하면 True를 반환한다. 그렇지 않으면 seek 혹은 tell을 사용할 때, UnsupportedOperation 예외가 발생한다. |
file.tell() | 현재 파일 위치를 반환한다. 파일 시작 지점의 바이트 개수를 반환한다. |
file.close() | 파일을 닫고 I/O 버퍼를 비워(flush) 지연되고 있던 모든 읽기/쓰기 연산을 파일에 반영한다. 이제 다른 프로그램이나 프로세스는 해당 파일에 자유롭게 접근할 수 있다. |
pickle.dump(obj, file) | 피클링과 함께 사용한다. 이 메서드는 바이너리 객체인 obj의 내용을 바이너리 포맷으로 만들고, 주어진 파일에 그 내용을 기록한다. |
pickle.dumps(obj) | 피클링과 함께 사용한다. 이 메서드는 obj의 바이너리 표현을 바이트 서식으로 반환한다. 바이트 서식은 앞 메서드인 pickle.dump와 함께 사용된다. 이 메서드는 객체를 실제로 파일에 기록하지 않기 때문에 제한적이다. |
pickle.load(file) | 피클링과 함께 사용한다. 이 메서드는 앞에서 pickle.dump 메서드로 파일에 작성한 객체를 반환한다. |
파일오픈 예외처리
>>> import os
>>>
>>> while True:
... fname = input('Enter file name : ')
... if not fname : # 빈문자열 입력시 종료
... break;
... try:
... f = open(fname)
... except FileNotFoundError:
... print('File could not be found. Re-enter.')
... else:
... print(f.read())
... f.close()
... break
with
- 파일 작업시 파일 I/O 읽기 도중 예외가 발생하여 파일을 제대로 닫지 못할 경우, 자원을 해제하지 않은 상태로 갑자기 종료될 것이다.
- with는 파일을 열어 변수로 파일에 접근할 수 있게한다. 만약 파일을 읽는 도중 예외가 발생하여도 파일은 자동적으로 닫히며 파일핸들러 또한 열린 채로 남아있지 않는다.
>>> with open('stuff.txt', 'r') as f:
... lst = f.readlines()
... for thing in lst:
... print(thing, end=' ')
'Python > 공통이론' 카테고리의 다른 글
Python - 고급 정규표현식 (0) | 2023.05.05 |
---|---|
Python - 정규표현식 (0) | 2023.04.25 |
Python - format 함수&메서드의 사양 필드 (0) | 2023.04.17 |
Python - repr (0) | 2023.04.17 |
Python - format 메서드 (0) | 2023.04.14 |