Day 9 파일 읽기 및 저장하기

2023. 3. 14. 13:05파이썬

1) jupyter notebook 설치 및 적용법

 

1. 파이썬 설치 

2. cmd 창 -> pip install jupyter

                    cf) 설치가 되지 않은 경우 : --upgrade 실행

 

3. 주피터 노트북 실행 -> jupyter notebook --notebook dir = '해당주소'

 

 

cf) jupyter notebook 테마 설치 -> pip install jupyterthemes

테마 종류 ->jt -t onedork

 

 

주피터 노트북 단축키

 

1. 셀 선택모드(esc)

a = 위에 새로운 셀 추가

b = 아래에 새로운 셀 추가

c = 셀 복사

v = 셀 붙여넣기

dd = 셀 삭제

m = 마크다운으로 변경

y = 코드로 변경


 

2. 셀 입력모드 (enter)

ctrl + enter = 셀 실행
shift + enter = 셀 실행후 아래 셀로 이동
alt + enter =셀 실행 후 아래 새로운 셀 추가
ctrl + a =  선택 셀 코드 전체 선택
ctrl + z =  선택 셀 코드 실행 취소
ctrl + y =  선택 셀 코드 다시 실행
ctrl + / =  커서 위치 주석 처리 (#)

 


 

2) 파일 읽기 및 저장하기 (in jupyter notebook)

 

1-1)현재 경로 확인

import os

os.getcwd()

 

1-2)디렉토리 내 파일 확인하기

os.listdir(os.getcwd())

 

결과

 

1-3)경로설정

path = 'sample/'   = 주피터 노트북이 실행된 곳에 sample이란 폴더 경로 저장

 

1-4) 파일 찾아보기

 

# 확장자로 찾기

print(glob.glob('*.txt'))

for filename in glob.glob('*.txt'):
    print(filename)
    
################################
    
    
# 하위 경로로 찾기

print(glob.glob('**/*.txt'))

for filename in glob.glob('**/*.txt'):
    print(filename)

################################

# 현재 + 하위 경로에서 찾기

print(glob.glob('**/*.txt',recursive = True):)

for filename in glob.glob('**/*.txt',recursive = True):
    print(filename)
    
    
# 파일명 글자수로 찾기  =  ?로 자리수를 표현한다. 

	# 4글자의 모든 확장자 찾기
for filename in glob.glob('????.*',recursive =True): # ????.* 글자수 
    print(filename)
    

# 문자열, 패턴 포함 파일명 찾기
	
    #영어로된 3글자 모든 확장자
for filename in glob.glob('[a-z][a-z][a-z].*',recursive =True): 
    print(filename) 
    
	#하위폴더에 '새파일로 시작하는 모든 확장자
for filename in glob.glob('**/새파일*.*'):
    print(filename)
    
    #하위폴더에 '프로젝트'단어가 사이에 들어가는 모든 확장자
for filename in glob.glob('**/*프로젝트*.*'):
    print(filename)

 

 

 

 

1. fileinput

텍스트 파일을 읽고, 쓰고, 저장하는 기능을 편리하게 사용하게 해주는 라이브러리

여러개의 파일을 읽어서 수정 가능

 

fileinput.isfirstline() = 첫번째 라인인지 검사해주는 메소드

 

 

inplace = True    덮어쓰기

 

파일 출력하기 

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

 

1번째 코드셀 

'첫번째 라인입니다\n'    =     \n띄어쓰기가 적용되있는것 까지 입력해야된다.

 

3번재 코드셀 (텍스트 치환)

list.replace(before 텍스트, after 텍스트) 사용

 

 

 

2.glob 

해당 경로의 파일 이름을 리스트로 반환

glob.glob(os.path.join(path, '*.txt'))

# os 라이브러리 -> path 경로에 관련된 메소드 -> join 경로를 연결하는 메소드
# *.txt  = 모든 텍스트 파일 지정

3.pickle

파이썬에서 사용하는 딕셔너리,리스트,클래스 등의 자료형을 변환없이 그대로 저장할 때 사용하는 모듈

 

 

pickle.dump(data,f)   = f라는 파일에 data를 입력

pickle.load(f) = f 라는 파일을 불러온다. (list로)

 

 

 

 

4. fnmatch

glob와 동일하게 특정한 패턴을 따르는 파일명을 찾아주는 모듈

파일명 매칭 여부는 T n F로 반환하기때문에 os.listdir(조건 ex) , _ + )함수와 함께 사용

# 사용법

# 파일명은 '새'로 시작하고, 확장자명은 '.txt'를 검색 
# 확장자를 제외한 파일명의 길이는 4개이며, 파일명의 마지막 문자는 숫자

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

 

 

5. shutil 

파일을 복사하거나, 이동할 때 사용하는 내장 모듈

 

shutil.copy()

shutil.move()

# 파일 복사하기
import shutil
shutil.copy('sample/새파일1.txt','sample/새파일1복사본.txt')

# 파일 이동 or 확장자 명 변경
shutil.move('./sample/새파일1복사본.txt','./새파일1복사본.txt')

shutil.move('./새파일1복사본.txt','./새파일1복사본.py')

6. zlib (인코딩, 디코딩시 사용)

zlib.compress(data.encode('코덱')) = 압축

zlib.compress(data.decode('코덱')) = 복호화

 

7. gzip

파일을 압축하거나, 해제할 때 사용

내부적으로 zlib 알고리즘

 

 

# 1234 텍스트 파일에 새로쓰기로  data 입력
with open('1234.txt','w') as f:
    f.write(data)
    
# gzip.open('새로운 파일명.gz,'방식')
# f.write()

with gzip.open('compressed.txt.gz','wb') as f:
   f.write(data.encode('utf-8'))
   
# gzip.open('새로운 파일명.gz,'방식')  
# f.read()
with gzip.open('compressed.txt.gz','rb') as f:
    org_data = f.read().decode('utf-8')

8. tarfile

여러개의 파일을 tar 확장자로 합쳐서 압축할 때 사용하는 모듈

 

tarfile.add() = 파일 추가 (압축할)

tarfile.extractall() = 압축 풀기

 

with tarfile.open('./sample/새파일1.tar','w') as mytar:
    mytar.add('./sample/새파일1.txt')
    mytar.add('./sample/새파일2.txt')
    mytar.add('./sample/새파일3.txt')
    mytar.add('./sample/새파일4.txt')
    mytar.add('./sample/새파일5.txt')​

 

728x90

'파이썬' 카테고리의 다른 글

Day14_MySQL _Python 데이터 삽입+삭제+수정+출력  (0) 2023.03.22
Day13_Python_ DAO,DTO,VO  (0) 2023.03.21
Day 8 변수 타입 어노테이션  (0) 2023.03.14
Day 8 클로저와 데코레이터  (0) 2023.03.14
Day 8 파일 입출력  (0) 2023.03.14