반응형

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

* 파이썬 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' 카테고리의 다른 글

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

+ Recent posts