본문 바로가기

Python

Python에서 json파일 다루기 (읽기, 쓰기, 수정)

반응형

Python에서 json파일 다루기 (읽기, 쓰기, 수정)


C 드라이브에 아래와 같은 json 형식의 파일이 있다고 가정해보자


C:\test.json

{

"K5": {

"price": "5000",

"year": "2015"

},

"Avante": {

"price": "3000",

"year": "2014"

}

}





# json 파일 읽기


해당 파일을 읽기 위해서는 json 모듈을 임포트 한후, load함수를 통해 데이터를 가져올 수 있다.


import json


with open('C:\\test.json', 'r') as f:

    json_data = json.load(f)

print(json.dumps(json_data) )



출력 : 

{"K5": {"price": "5000", "year": "2015"}, "Avante": {"price": "3000", "year": "2014"}}

아래와 같이 들여쓰기를 통해 깔끔하게 출력하는 옵션도 있다.


print(json.dumps(json_data, indent="\t") )


출력

{

"K5": {

"price": "5000",

"year": "2015"

},

"Avante": {

"price": "3000",

"year": "2014"

}

}




# json 파일 출력하기


json 파일을 읽어들이면, 딕셔너리 형태로 json_data 변수에 저장된다.


해당 변수에 접근하여 특정 요소의 값을 출력할 수 있다.


접근 방법은 아래와 같다.


k5_price = json_data['K5']['price']

print(k5_price)

출력

5000




# json 파일 수정하기


값을 불러오는것 뿐만 아니라 쓰는것도 가능하다.


json_data['K5']['price'] = "7000"

print(json_data['K5']['price'])


출력

7000



위 코드를 통해 K5의 price를 수정해봤다.


여기서 json_data를 파일 형식으로 저장하면, json 파일 자체도 수정사항이 반영된 채로 저장이된다.


아래와 같이 해당 json 파일을 다시 저장해보고, 출력해보자.


with open('C:\\test.json', 'w', encoding='utf-8') as make_file:

    json.dump(json_data, make_file, indent="\t")

with open('C:\\test.json', 'r') as f:

    json_data = json.load(f)

print(json.dumps(json_data, indent="\t") )


출력문

{

"K5": {

"price": "7000",

"year": "2015"

},

"Avante": {

"price": "3000",

"year": "2014"

}

}



그럼 해당 파일이 수정된채로 저장된 것을 확인할 수 있다.



# json 파일 쓰기


프로그램 상에서 딕셔너리를 만들고, 이를 json 파일로 저장할 수도 있다.



import json


car_group = dict()


k5 = dict()

k5["price"] = "5000"

k5["year"] = "2015"

car_group["K5"] = k5


avante = dict()

avante["price"] = "3000"

avante["year"] = "2014"

car_group["Avante"] = avante


#json 파일로 저장

with open('C:\\test.json', 'w', encoding='utf-8') as make_file:

    json.dump(car_group, make_file, indent="\t")


# 저장한 파일 출력하기

with open('C:\\test.json', 'r') as f:

    json_data = json.load(f)

print(json.dumps(json_data, indent="\t") )



출력문 :

{

"K5": {

"price": "5000",

"year": "2015"

},

"Avante": {

"price": "3000",

"year": "2014"

}

}





반응형