카테고리 없음

8일차 - 2

동동순이 2024. 3. 21. 17:52
OS

 

파이썬의 os 모듈은 운영 체제와 상호 작용하는 많은 함수와 유틸리티를 제공합니다.  모듈을 사용하면 파일, 디렉터리 또는 운영 체제에 관한 작업을 수행할  있습니다.

 

import os
# 현재 경로 확인
os.getcwd()
# 디렉토리 안에 파일(디렉토리)을 리스트로 반환
os.listdir(os.getcwd())
#경로 만들기
data_dir = './data/'
file_path = os.path.join(data_dir, 'output.txt')
print(file_path)
./data/output.txt

새로 만든 data에 경로를 만들어준다.

 

glob

glob 모듈은 파일과 폴더 이름을 찾을  사용하는 파이썬의 도구입니다.  모듈의 이름은 "전역적으로 찾기"라는 의미의 "global"에서 유래했습니다. glob는 특정 패턴에 일치하는 파일이나 폴더 이름을 쉽게 찾아줍니다. 

 

 

# 해당 경로의 파일(디렉토리) 이름을 리스트로 반환
print(glob.glob(os.path.join('data/', '*.txt')))
['data/output.txt', 'data/텍스트파일1.txt', 'data/텍스트파일3.txt', 'data/텍스트파일2.txt']

data파일안에 있는 것들이 리스트로 반환되어 알려준다.

for filename in glob.glob('*.txt'):
  print(filename)
오렌지.txt
사과.txt
바나나.txt
abcdef.txt
org_data.txt
# 하위 경로의 txt파일 찾기
for filename in glob.glob('**/*.txt'):
  print(filename)
data/output.txt
data/텍스트파일1.txt
data/텍스트파일3.txt
data/텍스트파일2.txt
# 현재 경로와 하위 경로의 txt 파일 모두 찾기
for filename in glob.glob('**/*.txt', recursive=True):
  print(filename)
오렌지.txt
사과.txt
바나나.txt
abcdef.txt
org_data.txt
data/output.txt
data/텍스트파일1.txt
data/텍스트파일3.txt
data/텍스트파일2.txt
압축 푸는 곳/data/텍스트파일1.txt
압축 푸는 곳/data/텍스트파일3.txt
압축 푸는 곳/data/텍스트파일2.txt

아래에 명령어를 실행하는것이 있기때문에 이렇게 길게나온다,

# 파일명 글자수로 찾기
for filename in glob.glob('???.*', recursive=True):
  print(filename)

??? 세글자로 된 파일명을 찾아준다.

오렌지.txt
바나나.txt
for filename in glob.glob('??.*', recursive=True):
  print(filename)
사과.txt

?? 파일명이 두글자인것을 찾아준다.

 

# 문자열 패턴 포함 파일명 찾기
for filename in glob.glob('[a-z][a-z][a-z][a-z][a-z][a-z].*',recursive=True):
  print(filename)
abcdef.txt

파일명이 영어로 6글자인 것을 찾아준다.

 

for filename in glob.glob('[가-힣][가-힣].*',recursive=True):
  print(filename)
사과.txt

파일명이 한글로 두글자인것을 찾아준다

 

for filename in glob.glob('**/텍스*.*',recursive=True):
  print(filename)
data/텍스트파일1.txt
data/텍스트파일3.txt
data/텍스트파일2.txt
압축 푸는 곳/data/텍스트파일1.txt
압축 푸는 곳/data/텍스트파일3.txt
압축 푸는 곳/data/텍스트파일2.txt

파일명에 텍스가 들어가는 것을 찾아준다.

 

for filename in glob.glob('**/*파일*.*',recursive=True):
  print(filename)
data/새파일.zip
data/텍스트파일1.txt
data/텍스트파일3.txt
data/텍스트파일2.txt
압축 푸는 곳/data/텍스트파일1.txt
압축 푸는 곳/data/텍스트파일3.txt
압축 푸는 곳/data/텍스트파일2.txt

 

fileinput 

 

모듈은 파이썬에서 여러 입력 스트림을 동시에 순회하는  유용합니다.  모듈의 주요 용도는 명령줄에서 명시된 여러 파일을 동시에 읽는 스크립트를 작성하는 것입니다.

 

import fileinput
with fileinput.input(glob.glob(os.path.join('data/', '*.txt'))) as f:
    for line in f:
        print(line)

 

 


# 각 파일의 첫번째 라인을 찾아 변경하기
with fileinput.input(txt_files, inplace=True) as f:
    for line in f:
        if f.isfirstline():
            print('첫번째 라인이야!', end='\n')
        else:
            print(line, end='')

 텍스트 파일1,2,3이 첫번째라인이 첫번째라인이야! 라고변한다.

 

with fileinput.input(txt_files, inplace=True) as f:
    for line in f:
        if '3' in line:
            print(line.replace('3','세번째.'), end='')
        else:
            print(line, end='')

텍스트 파일1,2,3 의 3이 세번째.으로 변한다.

pickle

pickle 모듈은 파이썬 객체 구조를 직렬화하고 역직렬화하는 프로세스를 제공합니다. 다른 말로하면, 파이썬 객체(리스트, 딕셔너리, 클래스 인스턴스 등)를 바이트 스트림으로 변환하고,  바이트 스트림을 다시 파이썬 객체로 복원할  있습니다.

import pickle
data = ['apple','banana','orange']
# 직렬화: 바이트 스트림으로 변환
with open('list.pkl','wb') as f:
 pickle.dump(data, f)
# 역직렬화:바이트 스트림을 다시 파이썬 객체로 복원
with open('list.pkl','rb') as f:
 data=pickle.load(f)

 print(data)
 print(type(data))
['apple', 'banana', 'orange']
<class 'list'>

역직렬화를해줘서 다시 원래대로 돌아온다.

 

shutil

shutil 모듈은 파이썬에서 고수준 파일 연산을 수행하기 위한 유틸리티 모듈입니다. 기본적인 os 모듈에서 제공하는 기능을 확장하여, 파일  디렉터리를 복사, 이동, 삭제하는  사용할  있는  다양한 함수를 제공합니다.

 

import shutil
# /content/data/텍스트파일1.txt
shutil.copy('/content/data/텍스트파일1.txt', '/content/텍스트파일1_복사본.txt')

데이터 파일안에있는 텍스트파일1을 꺼내와서 복사한다라는뜻

 

# 확장명 바꾸기
shutil.move('./텍스트파일1_복사본.txt', './텍스트파일1_복사본.py')
./텍스트파일1_복사본.py

파일명을 바꿔준다.

 

fnmatch

 

fnmatch는 파일 이름과 패턴을 비교하거나 매칭하는 데 사용되는 Python의 표준 라이브러리 모듈 중 하나입니다. 이 모듈은 와일드카드 문자(*, ?)를 사용하여 파일 이름을 패턴과 비교하고 일치하는지 확인하는 기능을 제공합니다. 주로 파일 및 디렉터리 관리 작업에서 사용됩니다.

import fnmatch
for filename in os.listdir('./data'):
  if fnmatch.fnmatch(filename,'?????[0-9].txt'):
    print(filename)

파일명이 0-9글자사이에 있고 뒤에 .txt가있으면 출려해줘라는뜻

텍스트파일1.txt
텍스트파일3.txt
텍스트파일2.txt

 

 데이터 압축

 

파이썬에서는 데이터 압축  아카이브 생성을 위한 여러 모듈을 제공합니다. 이러한 모듈들을 사용하면 다양한 압축  아카이브 형식으로 데이터를 처리할  있습니다.

 

1. zlib: 데이터를 압축하거나 해제할 때 사용하는 모듈

예를 알아보자

import zlib
data = 'Hello Python!' * 10000
print(len(data)) # 130000 byte
compress_data = zlib.compress(data.encode(encoding='utf-8'))
print(len(compress_data)) # 293 byte
130000
293

각각의 결과값이 130000, 293이 나온다

zip함수를 이용해서 압축해주니 이렇게 나온다.