본문 바로가기
  • CobsLab upgrades your company value by AI technology
파이썬- 업무자동화

python os 라이브러리 + 대규모 파일 처리하기

by dmkdmk 2023. 2. 21.

os 라이브러리는 파일 및 디렉토리 관리와 관련된 다양한 함수를 제공합니다.

이를 이용하여 현재 작업 디렉토리 조회, 디렉토리 생성, 디렉토리 삭제, 파일 생성, 파일 삭제, 파일 이동,

파일 이름 변경 등의 작업을 수행할 수 있습니다.

+작업진행은 COLAB에서 진행했음을 알립니다!

현재 작업 디렉토리 조회

os.getcwd() 함수를 이용하여 현재 작업 디렉토리를 조회할 수 있습니다.

import os 

print(os.getcwd())

디렉토리 생성

os.mkdir() 함수를 이용하여 디렉토리를 생성할 수 있습니다.

생성하려는 디렉토리의 경로를 인자로 전달합니다.

import os 
 
os.mkdir("new_dir")

new_dir 폴더가 생겼습니다!!

 

디렉토리 삭제

os.rmdir() 함수를 이용하여 디렉토리를 삭제할 수 있습니다.

삭제하려는 디렉토리의 경로를 인자로 전달합니다.

디렉토리가 비어있지 않으면 에러가 발생합니다.

import os 

os.rmdir("new_dir")

삭제 된 new_dir

파일 생성

Python에서 파일을 생성하는 가장 일반적인 방법은 open() 함수를 이용하는 것입니다.

open() 함수를 이용하여 파일을 생성하면 파일을 작성할 수 있습니다.

mode 인자를 이용하여 파일을 읽기 모드("r"), 쓰기 모드("w"), 추가 모드("a") 등으로 열 수 있습니다.

with open("new_file.txt", "w") as f: 
    f.write("Hello, World!")

파일 삭제

os.remove() 함수를 이용하여 파일을 삭제할 수 있습니다. 삭제하려는 파일의 경로를 인자로 전달합니다.

import os 

os.remove("new_file.txt")

 

파일 이동

os.rename() 함수를 이용하여 파일을 이동할 수 있습니다.

첫 번째 인자로 이동할 파일의 경로를, 두 번째 인자로 이동할 위치를 지정합니다.

import os 

os.rename("old_file.txt", "new_file.txt")
 
 
 

파일 이름 변경

os.rename() 함수를 이용하여 파일 이름을 변경할 수 있습니다.

첫 번째 인자로 변경 전 파일의 경로와 이름을 지정하고,

두 번째 인자로 변경 후 파일의 경로와 이름을 지정합니다.

import os 

os.rename("old_file.txt", "new_file.txt")

엇! 파일 이름 변경, 파일 이동 코드가 완전히 같죠?

 

rename은 파일 이동과 파일 이름 변경을 모두 수행할 수 있습니다.

그러나 두 작업을 수행하는 방법이 약간 다릅니다.

os.rename() 함수를 이용하여 파일을 이동하거나 파일 이름을 변경할 수 있습니다.

첫 번째 인자로 이동할 파일의 경로와 이름을 지정하고, 두 번째 인자로 이동할 위치를 지정합니다.

import os 

# 파일 이동 
os.rename("old_file.txt", "new_dir/new_file.txt") 

# 파일 이름 변경 
os.rename("old_file.txt", "new_file.txt")

위 예시에서, os.rename() 함수를 이용하여 파일 이동을 수행할 때는

두 번째 인자로 이동할 디렉토리 경로와 이동할 파일 이름을 모두 지정해줍니다.

그리고 파일 이름 변경을 수행할 때는 두 번째 인자로 변경할 파일의 새로운 이름을 지정해줍니다.

자 그럼 이제 실전에서는 어떻게 활용할 수 있을까요?

가짜 데이터를 만들어 보고 해당 데이터들을 처리하는 예시를 보면서

아 나는 이렇게 적용할 수 있겠다

를 한번 느껴보시기 바랍니다!

import os 

# 디렉토리 경로 지정 
dir_path = "/content/test_folder" 

# 디렉토리 생성 
os.makedirs(dir_path, exist_ok=True) 

# 대규모 파일 생성 
for i in range(1000):
	file_name = f"large_file_{i}.txt" 
    	file_path = os.path.join(dir_path, file_name) 
    	with open(file_path, "w") as f: 
    		f.write("large file content")

위 코드는 테스트 폴더를 만들고 거기에 1000개의 파일을 생성하는 코드의 예시입니다

코드를 실행 하면

덜덜

엄청나게 많은 파일이 생성된걸 확인할 수 있습니다

그럼 모든 파일을 다 열어서 출력하는 코드를 작성해 보겠습니다

import os 


path = "/path/to/directory" 

for root, dirs, files in os.walk(path):
    for file in files: 
        if file.endswith(".txt"): 
            with open(os.path.join(root, file), "r") as f: 
                print(f.read())

위 코드에서 os.walk() 함수는 지정한 경로의 모든 하위 디렉토리를 탐색합니다.

디렉토리를 탐색할 때는 for문을 이용합니다.

for문을 이용하여 탐색한 디렉토리 내의 파일을 모두 처리할 수 있습니다.

위 코드에서는 for문을 이용하여 지정한 경로의 모든 텍스트 파일을 열어서 파일 내용을 출력하고 있습니다.

 

os.walk() 함수는 탐색 순서를 유지하면서 모든 하위 디렉토리를 순회하기 때문에, 파일 처리를 위한 복잡한 로직을 작성할 필요가 없습니다. 이를 이용하여 대용량 파일 처리를 간단하게 수행할 수 있습니다.

위에서 배운 함수들을 적절히 섞어서 다양한 기능을 할 수 있겠죠?

이렇게 os 라이브러리를 이용하여 파일 및 디렉토리 관리 작업을 자동화할 수 있습니다.

다음 포스트에서는 하나의 대규모 파일을 처리하는 방법에 대해 알아 보겠습니다!

오늘도 끝까지 봐주셔서 대단히 감사드립니다!

교육 & 프로젝트 문의

tfkeras@kakao.com

 

댓글