데이터분석 study/Python

TIL_24.07.10_ 알면 유용한 파이썬 문법들2(glob,os,split)

justdata 2024. 7. 10. 17:11

● glob 함수

    - 파일 시스템에서 파일을 찾을 때 사용되는 유용한 도구

    - 파일 이름의 패턴 매칭을 통해 파일을 검색하고, 일치하는 파일들의 리스트를 반환

    - 주로 파일 이름이나 확장자에 따라 파일을 필터링 하는데 사용

 

     *폴더를 구분할 때는 '\' (window 체제) 기호를 사용한다.

     *파일 명을 입력해줄 때 반드시 확장자도 함께 입력해주어야 한다.

 

     *일치하는 파일이나 디렉토리의 패턴을 나타날 때 와일드카드 문자를 사용한다. 

      ○ * : 0개 이상의 모든 문자와 일치한다.

                 ex) *.txt : 해당 디렉토리에서 텍스트 파일 모두 해당

      ○ 그 밖의 와일드카드 문자로 ?,[]. {} 등이 있다.

      ○ [] : 대괄호 안에 포함된 문자 중 하나와 일치

      ○ {} : 중괄호 안에 포함된 문자열 중 하나와 일치

 

예시 코드)

import glob

# 현재 경로의 모든 파일을 찾기
file_list1 = glob.glob('*')

 

# 디렉토리 안의 모든 파일 찾기
file_list3 = glob.glob('sample_data/*')

 

# 특정 확장자를 가진 파일만 찾기
file_list4 = glob.glob('sample_data/*.csv')

 

● os 모듈

  ○ 운영체제와 상호 작용하기 위한 다양한 함수들을 제공

  ○ 파일 시스템을 관리, 디렉토리를 탐색, 파일을 조작

  ○ 외부 프로그램을 실행하거나, 현재 프로세스의 종료 등의 작업을 수행

 

● os 사용 예시

  ○ 파일 및 디렉토리 관리:

     - 현재 작업 디렉토리 가져오기

import os
cwd = os.getcwd()
print(cwd)

     

     - 디렉토리 생성 

import os
os.mkdir('sample_data/new_directory')

 

     - 파일 이름 변경

import os
os.rename('sample_data/new_directory', 'sample_data/new_directory2')

 

    - 파일 삭제

import os
os.remove(file_adress)

import os
os.remove('sample_data/data.csv')

 

○ 경로 관리:

   - 파일 목록(경로) 가져오기

import os
files = os.listdir('/content')
print(files)

 

   - 경로 조작

import os
path = os.path.join('/content', 'sample_data', 'mnist_test.csv')
print(path)

 

▶ split 사용하기 

     - 리스트의 split 메서드를 활용하면 문자열을 여러개로 쪼개는데 유용

 

     - 문자열을 공백 기준으로 분할하여 리스트로 변환 예시

sentence = "Hello, how are you doing today?"
words = sentence.split()
print(words)  # 출력: ['Hello,', 'how', 'are', 'you', 'doing', 'today?']

 

    - 특정 구분자를 기준으로 문자열을 분할하여 리스트로 변환하기

data = "apple,banana,grape,orange"
fruits = data.split(',')
print(fruits)  # 출력: ['apple', 'banana', 'grape', 'orange']

 

    - 리스트의 각 항목을 문자열로 결합하기 (split 메서드는 아니지만 함께 알아두기)

words = ['Hello,', 'how', 'are', 'you', 'doing', 'today?']
sentence = ' '.join(words)
print(sentence)  # 출력: Hello, how are you doing today?

 

    - 리스트의 각 항목을 문자열로 결합하되, 특정 구분자를 사용하여 결합

fruits = ['apple', 'banana', 'grape', 'orange']
data = ','.join(fruits)
print(data)  # 출력: apple,banana,grape,orange

 

    - 여러 줄로 이루어진 문자열을 줄 단위로 분할하여 리스트로 변환하기

text = """First line
Second line
Third line"""
lines = text.split('\n')
print(lines)  # 출력: ['First line', 'Second line', 'Third line']

 

    - 문자열을 공백으로 분할한 후 특정 개수의 항목만 가져오기

sentence = "Hello, how are you doing today?"
words = sentence.split()
first_three_words = words[:3]
print(first_three_words)  # 출력: ['Hello,', 'how', 'are']

 

   - 문자열에서 공백을 제거한 후 문자열을 리스트로 변환하기

text = "   Hello   how   are   you   "
cleaned_text = text.strip()
words = cleaned_text.split()
print(words)  # 출력: ['Hello', 'how', 'are', 'you']

 

   - 데이터를 불러올 때 경로 처리할 때 rsplit() 함수 사용

# 데이터의 경로를 문자열로 표현
file_path = "/usr/local/data/sample.txt"

# split() 함수를 사용하여 디렉토리와 파일명으로 분할
directory, filename = file_path.rsplit('/', 1)
print("디렉토리:", directory)  # 출력: 디렉토리: /usr/local/data
print("파일명:", filename)    # 출력: 파일명: sample.txt

 

      * rsplit() 함수를 사용하여 오른쪽에서부터 최대 1회만 분할하도록 설정하여 

        파일명과 디렉토리로 나눈다.