* 이 포스트는 "파이썬 프로그래밍으로 지루한 작업 자동화하기" 의 내용을 참조해서 작성하였습니다.
* 파이썬 3.3을 기준으로 작성하였습니다.
파일 및 폴더 관리
shutil, os 모듈을 이용한 파일 및 폴더 관리에 대해서 알아보겠습니다.
파일 혹은 폴더 복사하기
>>> import shutil
>>> shutil.copy('/tmp/spam.txt', '/tmp2')
# /tmp 경로에 있는 spam.txt 파일을 /tmp2 경로로 복사합니다.
>>> shutil.copy('eggs.txt', '/tmp2/eggs2.txt')
# 현재 작업 경로에 있는 eggs.txt 파일을 /tmp2 경로에 eggs2.txt 파일로 이름을 변경하여 복사합니다.
>>> shtuil.copytree('/tmp/bacon', '/tmp/bacon_backup')
# /tmp/bacon 폴더에 있는 모든 내용을 /tmp/bacon_backup 으로 복사합니다.
파일 혹은 폴더 이동 및 이름 바꾸기
>>> import shutil
>>> shutil.move('/tmp/bacon.txt', '/eggs')
# 만약 /eggs 라는 폴더가 있다면, /tmp 경로에 있는 bacon.txt 파일을 /eggs 경로로 이동합니다.
# 만약 /eggs 라는 폴더가 없다면, /tmp 경로에 있는 bacon.txt 파일을 / 경로로 옮기고 파일 이름을 eggs 로 변경합니다.
>>> shutil.move('/tmp/bacon.txt', '/eggs/new_bacon.txt')
# /tmp 경로 있는 bacon.txt 파일을 /eggs 경로로 옮기고 파일 이름을 new_bacon.txt 로 변경합니다.
파일 혹은 폴더 지우기
os.unlink() |
파라미터로 보내진 경로에 있는 파일을 삭제합니다. |
os.mkdir() | 파라미터로 보내진 경로에 폴더를 생성합니다. |
os.rmdir() |
파라미터로 보내진 경로에 있는 폴더를 삭제합니다. 해당 경로에는 어떤 파일이나 폴더도 없는 빈 폴더여야 합니다. |
shutil.rmtree() |
파라미터로 보내진 경로에 있는 폴더를 삭제합니다. 그 안의 파일 및 폴더도 모두 삭제됩니다. |
다음은 확장자가 txt 인 파일을 모두 삭제하는 코드입니다.
>>> import os
for filename in os.listdir():
if filename.endswith('.txt'):
os.unlink(filename)
디렉토리 경로 탐색
os.walk() 함수를 이용합니다.
>>> import os
>>> for folderName, subfolders, filenames in os.walk('.'):
>>> print (folderName, subfolders, filenames)
파일 압축하기
zipfile 모듈을 이용한 파일 압축에 대해서 알아보겠습니다.
ZIP 파일 읽기
ZipFile 객체를 생성하여 필요한 작업을 수행하고 객체의 리소스를 해제해 줍니다.
>>> import zipfile, os
>>> testZip = zipfile.ZipFile('example.zip')
# example.zip 파일로 부터 ZipFile 객체를 생성합니다.
>>> testZip.namelist()
# example.zip 파일에 포함된 파일 리스트를 출력합니다.
>>> testFile = testZip.getinfo('test.txt')
# example.zip 파일에 들어 있는 test.txt 파일에서 정보를 읽어서 ZipInfo 형태의 객체를 돌려줍니다.
>>> testFile.file_size
# test.txt 파일의 압축되기 전 크기를 출력합니다.
>>> testFile.compress_size
# text.txt 파일이 압축된 파일 크기를 출력합니다.
>>> testZip.close()
# 객체의 리소스를 정리합니다.
ZIP 파일에서 추출하기
extract, extractAll 메소드를 이용하여 파일을 추출합니다.
전체 파일 추출하기
>>> import zipfile, os
>>> testZip = zipfile.ZipFile('example.zip')
>>> testZip.extractAll()
# 현재 작업 경로에 example.zip 파일에 있는 모든 파일을 추출합니다.
>>> testZip.close()
일부 파일 추출하기
>>> import zipfile, os
>>> testZip = zipfile.ZipFile('example.zip')
>>> testZip.extract('test.txt')
# 현재 작업 경로에 test.txt 파일을 추출
>>> testZip.extract('test.txt', '/tmp)
# /tmp 에 test.txt 파일을 추출
파일에서 압축하기
압축 파일을 생성하려면, ZipFile 객체를 생성할 때, 두 번째 인수로 'w' 를 전달하여 쓰기 모드로 열면 됩니다.
파일을 압축해서 추가할 때는 write() 메소드를 사용합니다.
>>> import zipfile
>>> newZip = zipfile.ZipFile('new.zip', 'w')
>>> newZip.write('spam.txt')
>>> newZip.close()
'프로그래밍 > Python' 카테고리의 다른 글
Python에서 Singleton 구현 (0) | 2024.10.19 |
---|---|
decorator 사용하기 (0) | 2024.06.06 |
8. 파일 읽고 쓰기 (0) | 2019.02.21 |
7. 정규 표현식 (0) | 2019.01.09 |
6. 문자열 다루기 (0) | 2019.01.08 |