FUNDAMENTAL | 05-2. 텍스트 데이터 (파일)
20210913
1. 파일 & 디렉토리
- 변수에 저장되는 데이터는 컴퓨터 메모리에 저장
- 메모리에 저장되는 데이터는 빠르다는 장점
- 일정 전원이 공급되어야지만 데이터가 보존
- 파일(file): ROM(Read Only Memory)이라는 보조기억장치에 데이터를 저장
파일 관련 메소드
f.read()
: 파일 읽기
f.readline()
: 파일을 한 줄씩 읽기
f.readlines()
: 파일 안의 모든 줄을 읽어 그 값을 리스트로 반환
f.write(str)
: 파일에 씀. 문자열 타입을 인자로 받음.
f.writelines(str)
: 파일에 인자를 한 줄씩 쓰기.
f.close()
: 파일 닫기
f.seek(offset)
: 새 파일의 위치를 찾기
디렉토리
파일이 어느 폴더(디렉토리)에 저장되어 있는가가 매우 중요
- 루트 디렉토리(root directory): 경로의 최상위 폴더
Window 운영 체제 : C:\
Linux 계열 운영 체제 : /
모듈과 패키지
- 파이썬에서는 지원하는 디렉토리 관련 표준 라이브러리:
- sys
- os
- glob
#- 현재 실행되고 있는 파이썬 실행 파일의 디렉토리를 반환
import sys
sys.executable
#- 임포트할 때 불러 오는 모듈들이 위치한 경로.
sys.path
모듈(module) : 파이썬으로 만든 코드가 들어간 파일 .py
패키지(package) : init.py
가 포함된 폴더로 흔히 라이브러리라고 칭함
PIP(Package Installer for Python) : 패키지 관리자로 파이썬을 설치하면 기본으로 설치됨
PyPA(Python Packaging Authority) : 파이선 패키지를 관리하고 유지하는 그룹
PyPI(The Python Package Index) : 파이썬 패키지들의 저장소
함수
sys.path
: 현재 폴더와 파이썬 모듈들이 저장되어 있는 위치를 리스트 형태로 반환
sys.path.append()
: 자신이 만든 모듈의 경로를 append 함수를 이용해서 추가함으로써 추가한 디렉토리에 있는 파이썬 모듈을 불러와 사용할 수 있다.
os.chdir()
: 디렉토리 위치 변경
os.getcwd()
: 현재 자신의 디렉터리 위치를 반환
os.mkdir()
: 디렉토리 생성
os.rmdir()
: 디렉토리 삭제
(단, 디렉토리가 비어 있을 경우)
glob.glob()
: 해당 경로 안의 디렉토리나 파일들을 리스트 형태로 반환
os.path.join()
: 경로(path)를 병합하여 새 경로 생성
os.listdir()
: 디렉토리 안의 파일 및 서브 디렉토리 리스트
os.path.exists()
: 파일 혹은 디렉토리의 경로 존재 여부 확인
os.path.isfile()
: 파일 경로의 존재 여부 확인
os.path.isdir()
: 디렉토리 경로의 존재 여부 확인
os.path.getsize()
: 파일의 크기 확인
2. 다양한 파일 포맷
CSV(Comma Seperated Value)
쉼표로 구분된 파일.
칼럼(column)을 쉼표(,)로 구분
CSV & Pandas
판다스(pandas)의 DataFrame은
to_csv
메소드를 지원
출처: AIFFEL FUNDAMENTAL_ 5. 텍스트 데이터
-
해당 메소드를 이용하면 csv 파일로 쉽게 저장
-
csv 파일을 DataFrame으로 변환시키면 데이터 분석 등 사용자가 편집하기에 용이
billboardchart = {
1 : ["Tho Box","Roddy Ricch","2019-12-19"],
2 : ["Don't Start Now", "Dua Lipa", "2019-11-01"],
3 : ["Life Is Good", "Future Featuring Drake", "2020-02-10"],
4 : ["Blinding", "The Weeknd", "2019-11-29"],
5 : ["Circles", "Post Malone","2019-08-30"]}
with open("billboardchart.csv","w") as f:
for i in billboardchart.values():
data = ",".join(i)
f.write(data+"\n")
#- 1. 데이터를 준비합니다.
fields = ["title", "singer", "released date"]
rows = [ ["Tho Box","Roddy Ricch","2019-12-19"],
["Don't Start Now", "Dua Lipa", "2019-11-01"],
["Life Is Good", "Future Featuring Drake", "2020-02-10"],
["Blinding", "The Weeknd", "2019-11-29"],
["Circles", "Post Malone","2019-08-30"]]
#- 2. 판다스를 이용해 데이터를 csv 파일로 저장합니다.
import pandas as pd
df=pd.DataFrame(rows, columns=fields)
df.to_csv('pandas.csv',index=False)
#- 3. 동일한 내용을 csv.writer를 이용해 수행해 봅니다.
import csv
filename = "test.csv"
with open(filename, 'w+', newline='\n') as csv_file:
csv_writer = csv.writer(csv_file)
csv_writer.writerow(fields)
csv_writer.writerows(rows)
# csv 파일을 DataFrame으로 변환
df = pd.read_csv('pandas.csv')
df.head()
XML(Extensible Markup Language)
다목적 마크업 언어.
인터넷 웹상에서 문서 즉, 내용을 교환할 때 이러한 마크업 언어를 이용.
-
마크업 언어
: 태그(tag)로 이루어진 언어.
상위(부모)태그 - 하위(자식)태그의 계층적 구조를 가짐 -
XML은
요소(element)
들로 이루어짐 -
요소
: <태그> 내용 </태그> 형태로 구성.
성(attribute)값을 가질 수도 있음.
ElementTree
파이썬 표준 라이브러리
Element()
: 태그 생성
SubElement()
: 자식 태그 생성
tag
: 태그 이름
text
: 텍스트 내용 생성
attrib
: 속성 생성
dump()
생성된 XML 요소 구조를 시스템(sys.stdout)에 사용
-
write()
: XML 파일로 저장 -
리스트(list)와 유사한 메소드를 제공
- append, insert, remove, pop
# XML 파일 생성하기
import xml.etree.ElementTree as ET
person = ET.Element("Person")
name = ET.Element("name")
name.text = "이펠"
person.append(name)
age = ET.Element("age")
age.text = "28"
person.append(age)
ET.SubElement(person, 'place').text = '강남'
ET.dump(person)
# 속성값, 태그명 변경(attrib, tag 메소드 활용)
person.attrib["id"] = "0x0001"
name.tag = "firstname"
ET.dump(person)
# 태그 삽입 (insert 활용)
lastname = ET.Element('lastname', date='2020-03-20')
lastname.text = '아'
person.insert(1,lastname)
ET.dump(person)
# 태그 삭제 (remove, pop 활용)
person.remove(age)
# XML 파일 저장하기
ET.ElementTree(person).write('person.xml')
JSON(JavaScript Object Notation)
웹 언어인 JavaScript의 데이터 객체 표현 방식.
다른 애플리케이션 사이에서 HTTP 요청으로 데이터를 보낼 때 널리 사용하는 표준 파일 포맷중 하나.
-
파이썬의 dictionary 타입과 유사한 구조
-
CSV 파일에 비해 좀 더 유연하게 데이터를 표현할 수 있고 XML 파일보다 파일을 쉽게 읽고 쓸 수 있음
# json 파일 저장하기
import json
person = {
"first name" : "Yuna",
"last name" : "Jung",
"age" : 33,
"nationality" : "South Korea",
"education" : [{"degree":"B.S degree", "university":"Daehan university", "major": "mechanical engineering", "graduated year":2010}]
}
with open("person.json", "w") as f:
json.dump(person , f)
# json 파일 읽기
import json
with open("person.json", "r", encoding="utf-8") as f:
contents = json.load(f)
print(contents["first name"])
print(contents["education"])
Author And Source
이 문제에 관하여(FUNDAMENTAL | 05-2. 텍스트 데이터 (파일)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tjddus0302/FUNDAMENTAL-05-2.-텍스트-데이터-파일저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)