Logo

09 CSV, JSON และวันที่เวลา

CSV, JSON และวันที่เวลา

หลังจากอ่านเขียนไฟล์พื้นฐานแล้ว รูปแบบที่ต้องเจอบ่อยคือ CSV, JSON และข้อมูลวันที่เวลา

อ่าน CSV

import csv

with open("orders.csv", "r", encoding="utf-8") as file:
    reader = csv.DictReader(file)

    for row in reader:
        print(row["order_id"], row["amount"])

ตัวอย่างไฟล์ orders.csv

order_id,customer,amount
1,Ann,1200
2,Bob,850

เขียน CSV

import csv

rows = [
    {"order_id": 1, "amount": 1200},
    {"order_id": 2, "amount": 850},
]

with open("summary.csv", "w", encoding="utf-8", newline="") as file:
    fieldnames = ["order_id", "amount"]
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(rows)

อ่าน JSON

import json

with open("config.json", "r", encoding="utf-8") as file:
    config = json.load(file)

print(config["app_name"])

ตัวอย่างไฟล์ config.json

{
  "app_name": "demo",
  "debug": true
}

เขียน JSON

import json

data = {"status": "success", "count": 10}

with open("result.json", "w", encoding="utf-8") as file:
    json.dump(data, file, ensure_ascii=False, indent=2)

datetime

from datetime import datetime

now = datetime.now()
print(now)
print(now.strftime("%Y-%m-%d"))

แปลงข้อความเป็น datetime

date_text = "2024-05-22"
date_value = datetime.strptime(date_text, "%Y-%m-%d")
print(date_value)

ตัวอย่างสรุปยอดขายจาก CSV

import csv

total = 0

with open("orders.csv", "r", encoding="utf-8") as file:
    reader = csv.DictReader(file)

    for row in reader:
        total += float(row["amount"])

print(f"total={total:.2f}")

แบบฝึกหัด

  1. สร้างไฟล์ orders.csv
  2. อ่านข้อมูลด้วย csv.DictReader
  3. คำนวณยอดรวม
  4. เขียนผลลัพธ์เป็น summary.json
  5. เพิ่ม field วันที่รันงานด้วย datetime.now()