ویدیو آموزش خواندن و نوشتن فایل های csv در پایتون

March 2022

در این آموزش نحوه خواندن و نوشتن فایل های CSV در پایتون را با کمک ماژول csv یاد می گیریم. فرمت CSV (مقادیر جدا شده با کاما) یکی از ساده ترین و رایج ترین روش ها برای ذخیره داده های جدولی است. برای ایجاد کردن یک فایل CSV، باید با فایلی با پسوند csv. بسازید.

 

در فایل های csv همیشه اولین خط نام ستون هایی است که قرار است اطلاعات را در آن ها ذخیره کنیم. مثلا در فایل زیر اطلاعات افراد را ذخیره کرده ایم:

name,age,email
amir,15,amir@gmail.com
jack,38,jack@email.com

 

همانطور که میبینید خوانایی فایل های csv بسیار پایین است دلیل این موضوع این است که فایل های csv برای انتقال اطلاعات بین ماشین ها استفاده میشود و خوانایی اطلاعات برای انسان ها اهمیتی ندارد. اطلاعات با کاراکتر کاما از یکدیگر جدا میشوند اما میتوانید از هر کاراکتر دیگری نیز استفاده کنید.

 

 

 #  خواندن فایل های csv در پایتون

برای کار کردن با فایل های csv در پایتون، ابتدا لازم است ماژول csv را ایمپورت کنید:

import csv

 

سپس با متد open پایتون فایل csv موردنظر را در حالت خواندن(r) باز میکنیم:

with open('persons.csv', 'r') as csvfile:
	data = csv.reader(csvfile)
	for line in data:
		print(line)

 

در قطعه کد بالا بعد از بازکردن فایل با متد open، آن فایل را به تابع reader از ماژول csv ارسال میکنیم. سپس میتوانیم اطلاعات داخل فایل را با یک حلقه for نمایش دهیم. بعد از اجرای کد بالا نتیجه زیر را میگیریم:

['name', 'age', 'email']
['amir', '15', 'amir@gmail.com']
['jack', '38', 'jack@email.com']

 

ماژول csv پایتون اطلاعات خوانده شده از فایل را به شکل لیست نمایش میدهد. دقت کنید که اولین خط نام ستونهایی است که اطلاعات را در آنها ذخیره کرده ایم.

 

پایتون کلاس دیگری به نام DictReader دارد که اطلاعات فایل csv را به شکل دیکشنری نمایش میدهد. برای استفاده از این کلاس کافیست آن را جایگزین reader کنید:

with open('persons.csv', 'r') as csvfile:
	data = csv.DictReader(csvfile)
	for line in data:
		print(line)

 

اگر کد بالا را اجرا کنید اطلاعات را به شکل دیکشنری به دست می آورید:

{'name': 'amir', 'age': '15', 'email': 'amir@gmail.com'}
{'name': 'jack', 'age': '38', 'email': 'jack@email.com'}

 

 

 #  نوشتن فایل های csv در پایتون

برای نوشتن اطلاعات در فایل های csv با استفاده از پایتون میتوانید از تابع writer استفاده کنید. تابع writer اطلاعات ورودی را به شکل لیست گرفته و در فایل csv مینویسد. به مثال زیر دقت کنید:

with open('persons.csv', 'w') as csvfile:
	data = csv.writer(csvfile)
	data.writerow(['name', 'age', 'email'])
	data.writerow(['amir', 12, 'amir@email.com'])
	data.writerow(['jack', 35, 'jack@email.com'])
	

 

برای نوشتن در فایل های csv ابتدا یک فایل با تابع open باز میکنید. اگر فایل از قبل وجود داشته باشد، اطلاعات در آن بازنویسی خواهد شد اما اگر فایل وجود نداشته باشد، آن را ایجاد میکند.

 

سپس فایل باز شده را به تابع writer ماژول csv میدهیم. در مرحله بعد با تابع writerow میتوانید مقادیر را به شکل لیست ارسال کرده و در فایل csv بنویسید. اگر قطعه کد بالا را اجرا کنید فایلی با نام persons.csv ایجاد خواهد شد که محتویات زیر را دارد:

name,age,email
amir,12,amir@email.com
jack,35,jack@email.com

 

همانطور که مشخص است اطلاعات با کاما از یکدیگر جدا شده اند. اما میتوانید با پارامتر delimiter نوع جداکننده را تغییر دهید:

data = csv.writer(csvfile, delimiter='-')

 

برای نوشتن در فایل های csv کلاس دیگری وجود دارد به نام DictWriter که اطلاعات را به شکل دیکشنری گرفته و در فایل وارد میکند. در این کلاس حتما باید نام فیلدها را جداگانه مشخص کنید. به مثال زیر دقت کنید:

with open('persons.csv', 'w') as csvfile:
	data = csv.DictWriter(csvfile, fieldnames=['name', 'age', 'email'])
	data.writeheader()
	data.writerow({'name':'amir', 'age':12, 'email':'amir@email.com'})
	data.writerow({'name':'jack', 'age':25, 'email':'jack@email.com'})

 

در کد بالا از کلاس DictWriter برای نوشتن در فایل csv استفاده کردیم. این کلاس ابتدا فایل باز شده و سپس نام فیلدها را میگیرد. در مرحله بعد با متد writeheader نام فیلدها را در خط اول فایل csv مینویسیم. بعد با تابع writerow دوباره اطلاعات را در فایل csv خط به خط مینویسیم با این تفاوت که این بار باید اطلاعات را به شکل دیکشنری ارسال کنید.

ارسال نظر

تلاش میکنم سوالات شما را در کمتر از یک روز پاسخ بدم