반응형

* 이 포스트는 "파이썬 프로그래밍으로 지루한 작업 자동화하기" 의 내용을 참조해서 작성하였습니다.

* 파이썬 3.3을 기준으로 작성하였습니다.



파일과 파일 경로


파일 속성 : 파일 이름, 경로



경로 구분자


윈도우에서는 백슬래시(\), MacOS (OSX) 와 리눅스에서는 슬래시(/)


os.path.sep 으로 확인이 가능합니다.


os.path.join() 을 이용해서 운영체제에 관계 없는 경로 생성이 가능 


>>> import os

>>> os.path.join('usr','bin','spam')

'usr/bin/spam'  (MacOS or Linux)

'usr\\bin\\spam' (Windows)



유용한 메써드


 os.getcwd()

 현재 경로를 확인 

 os.makedirs()

 새 폴더 만들기 

 os.listdir()

 매개변수 경로에 있는 파일 이름 문자열의 리스트를 돌려줍니다. 



상대 경로 vs 절대 경로


절대 경로 : 항상 루트 폴더로 시작한다.

상대 경로 : 프로그램의 현재 작업 디렉터리를 기준으로 시작한다.


. : 현재 디렉터리

.. : 부모 디렉터리



os.path 모듈


os.path 모듈에는 파일 이름과 파일 경로에 관련된 많은 유용한 기능을 포함하고 있습니다.



 os.path.abspath()

 매개변수의 절대 경로 문자열을 돌려줍니다.

 os.path.isabs()

 매개변수가 절대 경로일 때 True를, 상대 경로일 때 False 를 돌려 줍니다.

 os.path.relpath()

 두번째 매개변수의 경로로 시작하는 첫번째 매개변수의 상대 경로 문자열을 돌려 줍니다.

 os.path.dirname()

 매개변수의 마지막 슬래시 앞에 오는 모든 문자열을 돌려 줍니다. (윈도에서는 백슬래시) - 보통 파일 경로가 됩니다.

 os.path.basename()

 매개변수의 마지막 슬래시 뒤에 오는 모든 문자열을 돌려 줍니다. (윈도에서는 백슬래시) - 보통 파일 이름이 됩니다.

 os.path.sep

 현재 운영체제의 경로 구분자

 os.path.getsize()

 매개변수 안에 있는 파일의 크기를 바이트 단위로 돌려줍니다.

 os.path.exists()

 매개변수가 가리키는 파일 또는 폴더가 존재하면 True를, 그렇지 않다면 False를 돌려 줍니다. 

 os.path.isfile()

 매개변수가 존재하며 파일이라면 True를, 그렇지 않다면 False를 돌려 줍니다. 

 os.path.isdir()

 매개변수가 존재하며 폴더라면 True를, 그렇지 않다면 False를 돌려 줍니다. 




파일 읽기 / 쓰기 프로세스


1. open() 함수를 호출하여 File 객체를 돌려받습니다.

2. File 객체에 대해서 read() 혹은 write() 메써드를 사용하여 작업을 합니다.

3. File 객체의 close() 메써드를 이용하여 파일을 닫습니다.



파일 열기 속성


 r

 파일을 읽기 모드로 열어서 돌려 줍니다.

 w

 파일을 쓰기 모드로 열어서 돌려 줍니다. (이미 파일이 존재하면 내용이 삭제됩니다.)

 a

 파일을 이어 쓰기 모드로 열어서 돌려 줍니다. (기존 파일이 존재하지 않으면 새 파일을 생성합니다.)

 x

 파일을 이어 쓰기 모드로 열어서 돌려 줍니다. (기존 파일이 존재하지 않으면 예외가 발생됩니다.)

 b

 파일을 바이너리 모드로 돌려 줍니다.

 +

 파일을 업데이트 모드로 돌려 줍니다.



파일 읽기 예제


>>> f = open('test.txt')

>>> data = f.read()

>>> f.close()


data에 파일 내용이 들어 갑니다.



파일 쓰기 예제


>>> f = open('test.txt', 'w')

>>> f.write("test")

>>> f.close()


test.txt 파일에 문자열 "test" 가 저장됩니다.



반응형

'프로그래밍 > Python' 카테고리의 다른 글

decorator 사용하기  (0) 2024.06.06
9. 파일 관리  (0) 2019.02.21
7. 정규 표현식  (0) 2019.01.09
6. 문자열 다루기  (0) 2019.01.08
5. 사전 (Dictionary)  (0) 2019.01.07

+ Recent posts