کار با فایلهای JSON و CSV در پایتون
در برنامهنویسی مدرن، انتقال و ذخیره دادهها بخش جداییناپذیری از توسعه نرمافزار است. در کنار فایلهای متنی ساده، دو فرمت بسیار محبوب و پرکاربرد برای ساختاردهی دادهها وجود دارند: CSV و JSON. در این مقاله از پای شو، در ادامه مباحث مدیریت خطا و فایلها، به صورت عملی نحوه خواندن، نوشتن و مدیریت فایلهای JSON و CSV را در پایتون به همراه اصول هندل کردن خطاها بررسی خواهیم کرد.
کار با فایلهای CSV در پایتون
فایلهای CSV (Comma-Separated Values) یکی از سادهترین و سبکترین روشها برای ذخیره دادههای جدولی (مانند اکسل یا خروجی دیتابیسها) هستند. در پایتون، ماژول داخلی csv ابزارهای کاملی را برای کار با این فایلها فراهم میکند.
خواندن فایل CSV
برای خواندن فایل، ابتدا آن را با دستور with باز کرده و سپس از csv.reader استفاده میکنیم.
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 بسیار کاربردیتر است؛ زیرا هر ردیف را به شکل یک دیکشنری برمیگرداند و میتوانید بر اساس نام ستونها به دادهها دسترسی پیدا کنید.
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='' را تنظیم کنید تا از ایجاد خطوط خالی اضافی بین ردیفها جلوگیری شود.
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() استفاده میکنیم.
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) بسیار مفید هستند.
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 را مشاهده میکنید:
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، یکی از مهمترین مهارتها برای هر توسعهدهنده پایتون است. با استفاده از ماژولهای استاندارد پایتون و بکارگیری مدیریت خطای اصولی، میتوانید دادهها را به صورت امن و پایدار ذخیره یا بازیابی کنید و از بروز باگهای پیشبینینشده در اپلیکیشنهای خود جلوگیری نمایید.

بدون دیدگاه