1. txt 파일 다루기
내용 | 코드 |
파일 열기 *인코딩은 생략 가능 |
f = open("파일명", encoding="인코딩방법") |
특정 모드로 파일 열기 | f = open("파일명", "모드") *읽기:"r", 쓰기:"w", 쓰기&내용 추가:"a", *읽기&쓰기(기존 파일 내용 유지):"r+", |
모두 읽어서 출력 | print(f.read()) |
처음 #개 문자만 읽어 출력 | print(f.read(#)) |
현재 위치에서 한 줄을 읽어 출력 *'/n'도 함께 가져오므로 strup메서드와 함께 사용 추천 |
print(f.readline()) |
현재 위치에서 모든 줄을 리스트로 읽어 출력 | print(f.readlines()) |
내용 쓰기 | f.write("내용") |
리스트에 있는 내용 쓰기 | f.writelines(리스트) |
모두 읽어서 상수에 내용 저장 | content = f.read() |
상수에서 내용 수정 | content = content.replace("변경 전 문자", "변경 후 문자") |
상수 내용을 파일에 쓰기 | f.write(content) |
내용을 현재 커서 위치까지 잘라냄 | f.truncate() |
내용을 뒷 부분 # byte 빼고 잘라냄 | f.truncate(#) |
커서 위치 확인해 출력 | print(f.tell()) |
커서 위치를 #번 위치로 이동시키기 *처음은 0 |
f.seek(#) |
커서 위치를 현재 위치 기준으로 이동시키기 *음수면 앞으로, 양수면 뒤로 |
f.seek(f.tell() + 숫자) |
파일 닫기 | f.close() |
*read, write 메서드를 사용하면 마지막으로 읽은/쓴 위치로 커서가 이동함. (파일의 시작 커서 위치 : 0)
*open 메서드를 사용했으면 작업 후 필수로 꼭 close 메서드 사용해야 함.
2. with문
상술한 바와 같이 open메서드 사용 시, 작업이 끝나면 꼭 close 메서드를 사용해야 한다.
하지만 with문을 사용하면 close 메소드 없이, with문에 속하는 작업들이 끝나면 자동으로 파일이 닫힌다.
with문의 형식은 아래와 같다.
#파일 1개일 경우
with open("파일명") as f:
작업 내용들
#파일 2개 이상일 경우
with (open("파일명1") as f1, open ("파일명2") as f2):
작업 내용들
3. CSV 파일 다루기
.csv 파일을 다루는 방법은 2가지가 있다.
① 내장 함수 csv 이용
② 외장 함수 pandas 이용
우선 아래는 내장 함수 csv를 이용하는 방법이다.
내용 | 코드 |
파일 열기 *newline="" 권장 |
f = open("파일명", newline="") |
모두 읽어서 상수에 내용 저장 | a = csv.writer(f) |
상수에 리스트에 있는 내용 추가 (시퀀스를 한 줄로) | a.writerow(리스트명) |
상수에 리스트에 있는 내용 추가 (2차원 시퀀스를 여 줄로) | a.writerows(리스트명) |
f의 각 줄을 순차적으로 반환하는 이터레이 | b = csv.reader(f) |
f 내용 한 줄씩 추출 | for x in b: print(row) |
f 내용 리스트로 추출 | list(b) |
아래는 외장 함수 pandas를 이용하는 방법이다. (import pandas as pd 를 한 상태)
내용 | 코드 |
csv 파일을 읽어 DataFrame 만들기 | df = pd.read_csv("파일명") |
딕셔너리를 DataFrame으로 만들기 | df = pd.DataFrame(딕셔너리명) |
데이터를 직접 넣어 DataFrame 만들기 | df = pd.DataFrame([1,3,5], [2,12,24]) #(row1, row2) |
DataFrame을 csv 파일로 저장하기 *index = False 하면 인덱스는 추가 안 됨 |
df.to_csv("파일명") |
DataFrame 위부터 #줄 자료 읽어 출력하기 | print(df.head(#)) |
DataFrame 아래부터 #줄 자료 읽어 출력하기 | print(df.tail(#)) |
4. json
(import json 을 한 상태)
내용 | 코드 |
JSON 파일 열기 | with open("파일명") as f: |
JSON 파일을 Python 객체에 저장 | a = json.load(f) |
JSON 파일의 문자열을 Python 객체에 저장 | a = json.loads(json문자열) |
Python 객체를 JSON으로 변환하여 파일에 쓰기 *indent는 들여쓰기 칸 수 |
json.dump(a, f, indent=숫자) |
Python 객체를 JSON 문자열로 변환 *indent는 들여쓰기 칸 수 |
json.dumps(a, indent=숫자) |
한글을 지키면서 json파일을 여는 법은 아래와 같다.
import json
with open("first.json", "r") as f1: #first 파일을 읽기 모드로 엶
object = json.load(f1) #first 파일 내용을 python 객체에 저장
with open("second.json", "w") as f2: #second 파일을 쓰기 모드로 엶
json.dump(object, f2, ensure_ascii=False)
#second 파일에 first 파일 내용을 넣는데, ASCII에서 표현 못하는 문자(한글)를 그대로 출력
#잘 작성되었는지 열어서 확인
with open("second.json", "r") as f:
print(json.load(f))
'코딩' 카테고리의 다른 글
[Python] Pandas 라이브러리 (0) | 2024.11.12 |
---|---|
[Python] 경로 (절대경로, 상대경로, os, pathlib, shutil) (1) | 2024.11.11 |
[Python] 프롬프트 사용 (가상환경, 라이브러리) (1) | 2024.11.09 |
[Python] 코드 단순화 (f-string, List Comprehension, Enumerate) (0) | 2024.11.08 |
[Python] 오류 관리 (Error, try-except) (0) | 2024.11.07 |