소개
이 랩은 Python 을 사용하여 파일과 폴더를 조작하는 방법을 이해하는 데 도움을 주기 위해 설계되었습니다. 파일 시스템과 상호 작용하고 파일 및 디렉토리를 생성, 삭제 및 이동하는 등의 일반적인 작업을 수행하는 방법을 제공하는 os 및 glob 모듈을 사용합니다.
성과
- os 모듈
- glob 모듈
이 랩은 Python 을 사용하여 파일과 폴더를 조작하는 방법을 이해하는 데 도움을 주기 위해 설계되었습니다. 파일 시스템과 상호 작용하고 파일 및 디렉토리를 생성, 삭제 및 이동하는 등의 일반적인 작업을 수행하는 방법을 제공하는 os 및 glob 모듈을 사용합니다.
다음은 여러 그룹의 샘플 폴더와 파일을 생성하는 Python 코드입니다.
import os
## Create multiple groups of sample folders and files
for i in range(3):
## Create a new folder for each group
folder_name = "group_" + str(i)
os.makedirs(folder_name)
## Create sample files within each folder
for j in range(3):
file_name = "file_" + str(j) + ".txt"
file_path = os.path.join(folder_name, file_name)
with open(file_path, "w") as file:
file.write("This is a sample file.")
에디터에서 create_samples.py를 열고 코드를 실행하여 결과를 확인할 수 있습니다.
os.makedirs(path)는 Python 의 os 모듈에 있는 함수로, 지정된 경로에 디렉토리를 생성합니다. 이 경우, path는 folder_name이며, 이는 외부 for 루프의 i 변수의 현재 값과 문자열 "group_"을 연결하여 구성되며, 결과적으로 "group_0", "group_1", "group_2"가 됩니다.
os.path.join(path1, path2, ...)은 os.path 모듈의 함수로, 하나 이상의 경로를 함께 연결합니다. 이 경우, path1은 folder_name이고 path2는 file_name이며, 이는 내부 for 루프의 j 변수의 현재 값과 문자열 "file_"을 연결하여 구성되며, 결과적으로 "file_0.txt", "file_1.txt", "file_2.txt"가 됩니다. os.path.join() 함수는 폴더 이름과 파일 이름을 연결하여 전체 파일 경로를 생성하여 폴더 내에 파일을 생성할 수 있도록 합니다.
os.path.join 함수를 사용함으로써, 코드는 Windows, Linux 또는 macOS 에서 코드를 실행하는지에 관계없이 현재 운영 체제에 맞는 올바른 구분 기호를 사용하여 폴더 이름과 파일 이름을 연결합니다.
Python 의 os 모듈은 운영 체제와 상호 작용하는 방법을 제공하여 디렉토리 생성 및 삭제, 파일 읽기 및 쓰기, 명령 실행과 같은 다양한 작업을 수행할 수 있도록 합니다.
새로운 Python 인터프리터를 엽니다.
python3
다음은 os 모듈에서 제공하는 다른 유용한 함수의 몇 가지 예입니다.
os.listdir(path): 지정된 디렉토리의 모든 파일과 디렉토리 목록을 반환합니다.
os.listdir('.') ## 현재 디렉토리의 모든 파일과 디렉토리 목록을 반환합니다.
os.remove(path): 지정된 경로의 파일을 삭제합니다.
os.remove('file.txt') ## 'file.txt'라는 파일을 삭제합니다.
os.rmdir(path): 지정된 경로의 빈 디렉토리를 삭제합니다.
os.rmdir('folder') ## 'folder'라는 빈 폴더를 삭제합니다.
os.rename(src, dst): 파일 또는 디렉토리의 이름을 src 경로에서 dst 경로로 변경합니다.
os.rename('file1.txt', 'file2.txt') ## 'file1.txt' 파일을 'file2.txt'로 이름을 변경합니다.
os.chdir(path): 현재 작업 디렉토리를 지정된 경로로 변경합니다.
os.chdir('/home/user/documents') ## 현재 작업 디렉토리를 '/home/user/documents'로 변경합니다.
os.getcwd(): 현재 작업 디렉토리를 반환합니다.
os.getcwd() ## 현재 작업 디렉토리를 반환합니다. 예: '/home/user/documents'
위의 대부분의 함수는 지정된 파일이나 디렉토리가 존재하지 않거나 필요한 권한이 없는 경우 예외 (FileNotFoundError, OSError 등) 를 발생시킵니다.
os.walk(top, topdown=True, onerror=None, followlinks=False)는 Python 의 os 모듈에 있는 함수로, 디렉토리 트리를 위에서 아래로 또는 아래에서 위로 순회하여 디렉토리 트리의 파일 이름을 생성합니다. 기본적으로 os.walk()는 디렉토리 트리의 파일 이름을 위에서 아래로 생성합니다. 디렉토리 top (top 자체 포함) 을 루트로 하는 트리의 각 디렉토리에 대해 3-튜플 (dirpath, dirnames, filenames) 을 생성합니다.
다음은 os.walk()를 사용하여 디렉토리와 하위 디렉토리의 모든 파일을 인쇄하는 방법의 예입니다.
import os
## Print all files in a directory and its subdirectories
for root, dirs, files in os.walk('.'):
for file in files:
print(os.path.join(root, file))
이 코드는 현재 디렉토리 ('.') 에서 시작하여 모든 하위 디렉토리를 재귀적으로 순회하며, 각 파일의 전체 경로를 인쇄합니다.
다음은 os.walk()를 사용하여 디렉토리에서 특정 확장자를 가진 특정 파일을 검색하는 또 다른 예입니다.
import os
def search_file(directory, file_extension):
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(file_extension):
print(os.path.join(root, file))
search_file('.','.txt')
이 코드는 '.txt' 확장자를 가진 모든 파일을 찾아 파일의 전체 경로를 인쇄합니다.
os.walk()는 파일 검색, 디렉토리 구조 분석 등과 같은 많은 작업에 사용할 수 있는 강력한 함수입니다.
os.walk는 제너레이터 (generator) 이므로 모든 값을 메모리에 유지하는 대신 즉시 값을 생성한다는 점에 유의해야 합니다. 이는 대규모 디렉토리 트리를 처리하는 데 효율적입니다.
Python 의 glob 모듈은 와일드카드 문자를 사용하여 파일과 디렉토리를 검색하는 방법을 제공합니다. glob.glob(pathname)은 지정된 경로 이름 패턴과 일치하는 파일 경로 목록을 반환합니다.
다음은 glob.glob()을 사용하여 현재 디렉토리에서 ".txt" 확장자를 가진 모든 파일을 찾는 방법의 예입니다.
import glob
txt_files = glob.glob('*.txt')
print(txt_files)
이 코드는 현재 디렉토리에서 ".txt" 확장자를 가진 모든 파일을 검색하고 패턴과 일치하는 파일 경로 목록을 반환합니다.
이것은 os.walk() 함수와 유사하지만, 하위 디렉토리를 재귀적으로 검색하지 않습니다. 현재 디렉토리에서 지정된 패턴과 일치하는 파일만 찾습니다.
다음은 glob.glob()을 사용하여 모든 하위 디렉토리에서 ".txt" 확장자를 가진 모든 파일을 찾는 방법의 예입니다.
import glob
txt_files = glob.glob('**/*.txt', recursive=True)
print(txt_files)
이 코드는 현재 디렉토리와 모든 하위 디렉토리에서 ".txt" 확장자를 가진 모든 파일을 검색합니다.
일반적으로, glob.glob()은 하나의 디렉토리와 하위 디렉토리에서만 파일을 찾으려는 경우 더 편리합니다. 그러나 os.walk()는 여러 디렉토리에서 파일을 검색하거나 디렉토리 트리의 구조를 분석하는 데 사용할 수 있으므로 더 강력하고 유연합니다.
os.walk와 마찬가지로 glob 도 제너레이터 (generator) 이므로 모든 값을 메모리에 유지하는 대신 즉시 값을 생성한다는 점에 유의해야 합니다. 이는 많은 수의 파일을 처리하는 데 효율적입니다.
이 랩에서는 Python 을 사용하여 os 및 glob 모듈을 사용하여 파일과 폴더를 조작하는 방법을 배웠습니다. 새로운 폴더를 생성하고, 현재 작업 디렉토리를 변경하고, 새 파일을 생성하고, 파일에 쓰고, 파일을 닫고, 디렉토리의 내용을 나열하고, glob 을 사용하여 특정 패턴과 일치하는 파일을 찾는 방법을 다루었습니다.