Python

파일 입출력 Json requests CURL CSV

끈끈 2023. 5. 21. 23:26

 

파일 입출력

 

파일 열기:

 

• open() : 경로 + 모드; 'r' (읽기), 'w' (쓰기), 'a' (추가)

 

파일 읽기:

 

• read() : 파일 전체 내용 읽기

• readline() :파일 한 줄씩 읽기

• readlines() : 파일의 모든 줄을 읽고, 각 줄을 요소로 갖는 리스트 반환

 

파일 쓰기:

 

• write() : 문자열(쓸 내용)

• writelines() : 리스트의 각 요소 파일에 쓰기

 

파일 닫기:

 

• close() : 파일 닫기

 

"r": 읽기 모드 (기본값). 파일을 읽기 위해 열기
"w": 쓰기 모드. 파일을 쓰기 위해 열기 이미 파일이 존재하면 덮어쓰고 파일이 없으면 새 파일 생성
"a": 추가 모드. 파일의 끝에 내용을 추가하기 위해 열기 파일이 없으면 새 파일 생성
"x": 배타적 생성 모드. 파일을 생성하기 위해 열기 파일이 이미 존재하는 경우 오류가 발생
"b": 이진 모드. 바이너리 파일을 열기
"t": 텍스트 모드 (기본값). 텍스트 파일을 열기

 

 

# 파일을 쓰기 모드로 엽니다.
file = open("example.txt", "w")

# 파일에 데이터를 작성합니다.
file.write("Hello, world!\n")
file.write("This is an example file.\n")
file.write("Writing some lines.\n")

# 파일을 닫습니다.
file.close()

# 파일을 읽기 모드로 열고 데이터를 읽는 예제입니다.
file = open("example.txt", "r")

# 파일 전체를 읽어옵니다.
contents = file.read()
print("전체 내용:")
print(contents)

# 파일을 닫습니다.
file.close()

# 파일을 다시 읽기 모드로 열고 한 줄씩 읽는 예제입니다.
file = open("example.txt", "r")

print("한 줄씩 읽기:")
# 파일의 각 줄을 반복하며 읽어옵니다.
for line in file:
    print(line.strip())

# 파일을 닫습니다.
file.close()

# 파일을 읽기 모드로 열고 모든 줄을 읽어 리스트로 반환하는 예제입니다.
file = open("example.txt", "r")

lines = file.readlines()
print("리스트로 읽기:")
print(lines)

# 파일을 닫습니다.
file.close()

 


 

Json 다루기

 

JSON 파싱

 

json.loads : JSON 문자열을 Python 객체(딕셔너리)로 변환

 

import json

# JSON 문자열
data = {'name': 'John', 'age': 30, 'city': 'New York'}

# JSON 문자열을 Python 객체로 변환
data = json.loads(json_data)

# Python 객체 출력
print(data)
print(type(data))

 

json.load : JSON 파일을 Python 객체(딕셔너리)로 변환

 

import json

with open('data.json') as file:
    data = json.load(file)

print(data["employee"])
print(data["employee"]["name"])
print(data["employee"]["salary"])

 

JSON 직렬화

 

json.dumps : Python 객체를 JSON 문자열로 변환

 

import json

# Python 객체
data = {'name': 'John', 'age': 30, 'city': 'New York'}

# Python 객체를 JSON 문자열로 변환
json_data = json.dumps(data)

# JSON 문자열 출력
print(json_data)
print(type(json_data))

 

json.dump : Python 객체를 JSON 파일로 변환

 

import json

# Python 객체
data = {'name': 'John', 'age': 30, 'city': 'New York'}

# Python 객체를 JSON 파일로 변환
with open('data2.json', 'w') as file:
    json.dump(data, file)

 


 

requests

 

pip install requests

 

GET 요청 보내기

 

import requests

response = requests.get(
    'https://jsonplaceholder.typicode.com/posts')
print(response.text)

 

POST 요청 보내기

 

body data가 있어야 한다

 

import requests

data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post(
    'https://jsonplaceholder.typicode.com/posts', data=data)
print(response.text)

 

 PUT 요청 보내기

 

import requests

data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.put(
    'https://jsonplaceholder.typicode.com/posts/1', data=data)
print(response.text)

 

DELETE 요청 보내기

 

import requests

response = requests.delete(
    'https://jsonplaceholder.typicode.com/posts/1')
print(response.text)

 


 

CURL

 

GET

 

curl https://jsonplaceholder.typicode.com/posts

 

 

POST

 

curl -X POST -d "title=foo&body=bar&userId=1" https://jsonplaceholder.typicode.com/posts

 

PUT

 

curl -X PUT -d "title=foo&body=bar&userId=1" https://jsonplaceholder.typicode.com/posts/1

 

DELETE

 

curl -X DELETE https://jsonplaceholder.typicode.com/posts/1

 


 

CSV 다루기

 

CSV 읽기

 

csv. reader

 

# 파이썬에서 csv 파일을 다루기 위해 모듈 import
import csv

csv_path = "sample.csv"

# csv를 list 자료형으로 읽기
csv_file = open(csv_path, "r", encoding="utf-8")
# csv.reader : 파일 객체를 인수로 받아들여 순회 가능한 reader 객체 반환
csv_data = csv.reader(csv_file)
# print(type(csv_data))
for i in csv_data:
    print(i)

# 작업이 끝난 csv 파일을 닫아줍니다.
csv_file.close()

# result output
"""
['email', 'birthyear', 'name', 'Location']
['laura@example.com', '1996', 'Laura Grey', 'Manchester']
['craig@example.com', '1989', 'Craig Johnson', 'London']
['mary@example.com', '1997', 'Mary Jenkins', 'London']
['jamie@example.com', '1987', 'Jamie Smith', 'Manchester']
['john@example.com', '1998', 'John', 'Manchester']
"""

 

csv.DictReader

 

# 파이썬에서 csv 파일을 다루기 위해 모듈 import
import csv

csv_path = "sample.csv"

# csv를 dict 자료형으로 읽기
csv_file = open(csv_path, "r", encoding="utf-8")
csv_data = csv.DictReader(csv_file)
# print(type(csv_data))
for i in csv_data:
    print(i)

csv_file.close()

# result output
"""
{'email': 'laura@example.com', 'birthyear': '1996', 'name': 'Laura Grey', 'Location': 'Manchester'}
{'email': 'craig@example.com', 'birthyear': '1989', 'name': 'Craig Johnson', 'Location': 'London'}
{'email': 'mary@example.com', 'birthyear': '1997', 'name': 'Mary Jenkins', 'Location': 'London'}
{'email': 'jamie@example.com', 'birthyear': '1987', 'name': 'Jamie Smith', 'Location': 'Manchester'}
{'email': 'john@example.com', 'birthyear': '1998', 'name': 'John', 'Location': 'Manchester'}
"""

 

CSV 쓰기

 

csv.writer

 

# 파이썬에서 csv 파일을 다루기 위해 모듈 import
import csv

csv_path = "sample2.csv"

# csv 파일을 쓸 때는 newline='' 옵션을 줘서 중간에 공백 라인이 생기는 것을 방지합니다.
csv_file = open(csv_path, "a", encoding="utf-8", newline='')

#  파일 객체를 인수로 받아들이고 writer 객체를 반환 
#  writer 객체의 writerow() 메서드를 사용하여 각 행을 쓸 수 있다
csv_writer = csv.writer(csv_file)

# csv에 데이터를 추가합니다.
csv_writer.writerow(["lee@sparta.com", '1989', "lee", "Seoul"])

csv_file.close()

csv_file = open(csv_path, "r", encoding="utf-8")
csv_data = csv.reader(csv_file)
for i in csv_data:
    print(i)

csv_file.close()

# result output
"""
...
['lee@sparta.com', '1989', 'lee', 'Seoul'] # 추가 된 행
"""

 


 

다음 주 예고

 

• 데코레이터

• itertools & Collections