کار با فایل‌های JSON و CSV در پایتون

1

کار با فایل‌های JSON و CSV در پایتون

در برنامه‌نویسی مدرن، انتقال و ذخیره داده‌ها بخش جدایی‌ناپذیری از توسعه نرم‌افزار است. در کنار فایل‌های متنی ساده، دو فرمت بسیار محبوب و پرکاربرد برای ساختاردهی داده‌ها وجود دارند: CSV و JSON. در این مقاله از پای شو، در ادامه مباحث مدیریت خطا و فایل‌ها، به صورت عملی نحوه خواندن، نوشتن و مدیریت فایل‌های JSON و CSV را در پایتون به همراه اصول هندل کردن خطاها بررسی خواهیم کرد.

کار با فایل‌های CSV در پایتون

فایل‌های CSV (Comma-Separated Values) یکی از ساده‌ترین و سبک‌ترین روش‌ها برای ذخیره داده‌های جدولی (مانند اکسل یا خروجی دیتابیس‌ها) هستند. در پایتون، ماژول داخلی csv ابزارهای کاملی را برای کار با این فایل‌ها فراهم می‌کند.

خواندن فایل CSV

برای خواندن فایل، ابتدا آن را با دستور with باز کرده و سپس از csv.reader استفاده می‌کنیم.

Python

import csv

with open("data.csv", "r", encoding="utf-8") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

اگر فایل شما دارای ردیف عنوان (Header) در خط اول است، استفاده از csv.DictReader بسیار کاربردی‌تر است؛ زیرا هر ردیف را به شکل یک دیکشنری برمی‌گرداند و می‌توانید بر اساس نام ستون‌ها به داده‌ها دسترسی پیدا کنید.

Python

import csv

with open("data.csv", "r", encoding="utf-8") as file:
    reader = csv.DictReader(file)
    for row in reader:
        # فرض می‌کنیم ستون‌هایی به نام Name و Age داریم
        print(row['Name'], row['Age'])

نوشتن در فایل CSV

برای نوشتن داده‌ها، فایل را در حالت w (Write) باز می‌کنیم. دقت کنید که در محیط ویندوز پارامتر newline='' را تنظیم کنید تا از ایجاد خطوط خالی اضافی بین ردیف‌ها جلوگیری شود.

Python

import csv

data = [
    ['Name', 'Age', 'City'],
    ['Ali', '25', 'Tehran'],
    ['Sara', '22', 'Shiraz']
]

with open("output.csv", "w", encoding="utf-8", newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data) # نوشتن چندین ردیف به صورت همزمان

کار با فایل‌های JSON در پایتون

فرمت JSON (JavaScript Object Notation) استاندارد اصلی انتقال داده در وب و APIها است. ساختار JSON بسیار شبیه به دیکشنری‌ها در پایتون است و خوانایی بالایی برای انسان و ماشین دارد. ماژول json در پایتون برای کار با این داده‌ها استفاده می‌شود.

خواندن فایل JSON

برای تبدیل محتوای یک فایل JSON به ساختارهای داده‌ای پایتون (مانند لیست یا دیکشنری)، از متد json.load() استفاده می‌کنیم.

Python

import json

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

نکته: اگر داده‌های JSON شما به جای فایل، درون یک متغیر متنی (String) قرار دارند، باید از json.loads() استفاده کنید.

نوشتن در فایل JSON

برای ذخیره یک دیکشنری یا لیست پایتونی درون یک فایل با فرمت JSON، متد json.dump() به کار می‌رود. پارامتر ensure_ascii=False برای ذخیره صحیح حروف فارسی و پارامتر indent برای ایجاد تورفتگی و خوانایی بهتر (Pretty Print) بسیار مفید هستند.

Python

import json

user_info = {
    "name": "امیر",
    "skills": ["Python", "Django", "Linux"],
    "active": True
}

with open("user.json", "w", encoding="utf-8") as file:
    json.dump(user_info, file, ensure_ascii=False, indent=4)

مدیریت خطاها هنگام کار با JSON و CSV

از آنجایی که کار با فایل‌ها همیشه مستعد خطاست، ترکیب این فرآیند با ساختارهای مدیریت خطا (try...except) در پایتون کاملاً ضروری است. مشکلاتی مانند عدم وجود فایل یا نامعتبر بودن کدهای داخل فایل می‌توانند باعث توقف برنامه شما شوند.

در مثال زیر، نحوه مدیریت جامع خطاها هنگام خواندن یک فایل JSON را مشاهده می‌کنید:

Python

import json

try:
    with open("config.json", "r", encoding="utf-8") as file:
        config = json.load(file)
        print("تنظیمات با موفقیت بارگذاری شد.")
        
except FileNotFoundError:
    print("خطا: فایل مورد نظر برای خواندن پیدا نشد!")
    
except PermissionError:
    print("خطا: شما سطح دسترسی لازم برای خواندن این فایل را ندارید.")
    
except json.JSONDecodeError:
    print("خطا: فایل JSON ساختار استانداردی ندارد یا محتوای آن خراب شده است.")
    
except Exception as e:
    print(f"یک خطای غیرمنتظره رخ داد: {e}")

نتیجه‌گیری

یادگیری نحوه پردازش داده‌های ساختاریافته مانند CSV و JSON، یکی از مهم‌ترین مهارت‌ها برای هر توسعه‌دهنده پایتون است. با استفاده از ماژول‌های استاندارد پایتون و بکارگیری مدیریت خطای اصولی، می‌توانید داده‌ها را به صورت امن و پایدار ذخیره یا بازیابی کنید و از بروز باگ‌های پیش‌بینی‌نشده در اپلیکیشن‌های خود جلوگیری نمایید.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *