프로젝트를 하다가 텍스트 데이터를 만들기 위해 저장한 엄청나게 많은 txt 파일을 읽어와야 하는 일이 생겼다. 주피터노트북으로 데이터 작업을 하다보면 외부 파일을 읽는 경우가 많았는데, 이 참에 코드를 저장해서 필요할 때 마다 참고하려고 한다.
주피터 노트북에서 파일을 읽거나 저장할 디렉토리를 리눅스 명령어를 사용해서 지정할 수 있다.
pwd #현재 디렉토리 확인
cd 폴더이름 #폴더로 이동
주요 리눅스 명령어
pwd : 현재 자신이 위치하는 디렉토리
cd : 디렉토리 이동
ls : 자신이 속해있는 폴더 내에서의 파일 및 폴더들을 표시
mkdir : 디렉토리 생성 ( 폴더 생성 ) == 앞으로 폴더를 디렉토리로 쓰겠습니다.
rmdir : 디렉토리 삭제
touch : 파일크기가 0인 파일 생성
한 폴더에 있는 파일을 모조리 열고 싶은데 이름이 제각각이라 리스트에 하나하나 써줘야 하나 고민하다가 발견한 방법.
os
의 listdir
를 사용하면 dir에 있는 파일 이름을 리스트로 가져와준다.
import os
path = "./"
file_list = os.listdir(path) # 리스트에 저장하기
앞에서 만든 리스트를 활용해서 하나하나 열고 딕셔너리에 저장해주는 방법.
dict_name = {}
list = file_list
for i in list:
file = open(i, "r", encoding='UTF-8')
text = file.read()
dict_name[i] = text
print(i+"끝") # 파일 하나 끝날 때 마다 끝났다고 출력해주기
file.close()
#피클로 저장하고 싶으면
import pickle
with open("name.pickle","wb") as fw:
pickle.dump(dict_name, fw)
딕셔너리를 csv로 바꿔서 저장하는 법.
# 딕셔너리를 csv 파일에 저장하기
with open('name_and_text.csv', 'w', encoding='utf-8', newline='') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames = ['index','name','text'])
writer.writeheader()
for key, value in dict_name.items(): #딕셔너리로 for 문
i = 0
writer.writerow({'index': i , 'name': key, 'text': value})
i += 1