목차
OS & shutil
OS와 shutil 두 가지 라이브러리를 통해 파이썬으로 파일과 폴더와 관련된 작업들을 할 수 있다.
•
OS: 운영체제와 관련된 함수와 클래스를 제공하는 라이브러리로 파일, 폴더와 관련된 함수와 클래스 제공
•
shutil: 파일, 폴더와 관련된 함수와 클래스를 제공하는 라이브러리
•
두 라이브러리 모두 파이썬에 기본으로 포함되어 있어 따로 설치할 필요는 없음
import os
import shutil
Python
복사
1. 폴더 만들기
1.1 현재 디렉토리와 파일 리스트 확인
1.2 폴더 만들기
•
os.makedirs()
1.3 만들려는 폴더가 이미 존재하는지 확인하고 없으면 생성하기
•
os.path.isdir()
2. 파일 쓰기
3. 파일 리스트 읽기
4. 파일 및 폴더 존재 여부 확인
os.path.exists("os_dir/test1.txt")
os.path.exists("os_dir3")
Python
복사
True
False
5. 파일 및 폴더 타입 확인
•
os.path.isfile()
•
os.path.isdir()
os.path.isdir("os_dir"), os.path.isfile("os_dir")
os.path.isdir("os_dir/test1.txt"), os.path.isfile("os_dir/test1.txt")
Python
복사
(True, False)
(False, True)
6. 파일 및 폴더 복사하기
•
shutil.copy(원본 경로, 대상 경로)
•
shutil.copyfile(원본 파일 경로, 대상 파일 경로): 원본이 파일이 아니라 폴더이면 에러 발생
•
shutil.copytree(원본 폴더 경로, 대상 폴더 경로): 원본이 폴더가 아니라 파일이면 에러 발생
7. 이름 바꾸기
•
os.rename(기존 파일명, 새로운 파일명)
os.rename("os_dir/copy1.txt", "os_dir/renamed.txt")
os.listdir("os_dir")
Python
복사
['copy2.txt', 'renamed.txt', 'test1.txt', 'test2.txt', 'test3.csv']
8. 파일 및 폴더 삭제
8.1 파일 삭제
os.remove("os_dir/test3.csv")
os.listdir("os_dir")
Python
복사
['copy2.txt', 'renamed.txt', 'test1.txt', 'test2.txt']
8.2 폴더 삭제
•
os.removedirs(): 폴더 안에 파일이 있으면 삭제되지 않음
•
shutil.rmtree(): 폴더 안에 파일이 있어도 삭제 가능
9. 권한설정
9.1 권한 설정 이해
•
10자리의 문자로 되어 있음 (e.g. rw-r--r--)
◦
[:1]: type ("-" 파일, "d" 디렉토리)
◦
[1:4]: 소유자의 권한
◦
[4:7]: 그룹에 대한 권한
◦
[7:]: 모든 사용자에 대한 권한
•
소유자/그룹/모든 사용자의 권한은 rwx로 나뉨
◦
rwx: r(읽기), w(쓰기), x(실행)
◦
rwx 각 권한이 있으면 1, 없으면 0(2진수)으로 표시 ⇒ 3자리의 2진수를 8진수로 변환
▪
rwx: 111(2진수) → 7(8진수)
▪
r--: 100(2진수) → 4(8진수)
▪
wx: 011(2진수) → 3(8진수)
9.2 권한 설정 실습
•
os.chmod(파일경로, 권한)
위 내용 전체를 jupyter notebook으로 보려면,
참고자료
•
패스트캠퍼스, ⟪데이터사이언스스쿨 8기⟫ 수업자료
•
이태화, 일잘하는 평사원의 업무자동화