Table of Contents
درک مفهوم «فایل» در برنامهنویسی
وقتی با پایتون کار میکنید، خیلی زود به جایی میرسید که باید اطلاعات را ذخیره یا بازیابی کنید؛ اینجاست که «فایل» وارد ماجرا میشود.
در این بخش فقط میخواهیم خودِ مفهوم فایل را بفهمیم؛ اینکه • فایل چیست • چرا به وجود آمده • چه انواعی دارد • و کدام بخش آن برای برنامهنویس مهم است. روش خواندن و نوشتن فایلها در فصلهای بعدی همین فصل ۱۰ خواهد آمد.
فایل از دید یک کاربر در برابر دید یک برنامهنویس
از دید کاربر
بهعنوان کاربر معمولی کامپیوتر، شما با انواع فایلها سروکار دارید:
- فایلهای متنی:
note.txt - فایلهای Word:
report.docx - فایلهای PDF:
book.pdf - عکسها:
image.jpg - ویدیوها:
movie.mp4 - موسیقی:
song.mp3 - فایلهای فشرده:
archive.zip
هر کدام از اینها برای شما یک آیکون روی دسکتاپ یا در یک پوشه است که با دوبار کلیک باز میشود.
از دید برنامهنویس
از نگاه برنامهنویس (و سیستمعامل)، فایل فقط یک دنباله از بایتهاست که روی حافظهٔ پایدار (مثل هارد، SSD، فلش) ذخیره شده است.
- این بایتها میتوانند نمایندهٔ متن، تصویر، صدا، ویدیو و … باشند.
- نرمافزارها تصمیم میگیرند این بایتها را چگونه تفسیر کنند.
برای ما در پایتون مهم است که:
- بتوانیم فایل را پیدا کنیم (با کمک مسیر و نام فایل).
- آن را باز کنیم.
- از آن بخوانیم یا در آن بنویسیم.
- آن را ببندیم تا ذخیرهسازی کامل شود.
جزئیات داخلی سیستمعامل خارج از محدودهٔ این دوره است؛ ما روی استفادهٔ عملی تمرکز میکنیم.
ساختار کلی یک فایل
از دید شما بهعنوان برنامهنویس پایتون، هر فایل سه بخش مهم دارد:
- نام فایل (مثلاً
data.txt) - پسوند فایل (مثلاً
.txt) - محتوا (متن، عدد، دادهٔ ساختیافته و …)
نام و پسوند فایل
- نام: بخش اول، مثل
report,image,data - پسوند: بخش بعد از نقطه، مثل
.txt,.jpg,.csv,.py
پسوند معمولاً به سیستمعامل و برنامهها کمک میکند تا:
- حدس بزنند فایل از چه نوعی است
- تصمیم بگیرند با کدام برنامه آن را باز کنند
برای پایتون، پسوند دو کاربرد مهم دارد:
- نوع داده را برای انسان روشنتر میکند (مثلاً میفهمیم
data.csvاحتمالاً جدولی از دادههاست). - گاهی پایتون بر اساس پسوند، روش خواندن فایل را متفاوت تنظیم میکند (مثلاً حالت متنی یا دودویی).
محتوا: متن در برابر دادهٔ دودویی
از نظر کلی دو دستهٔ مهم فایل داریم:
- فایلهای متنی (Text Files)
- فایلهای دودویی (Binary Files)
در برنامهنویسی مبتدی پایتون، تمرکز اصلی روی فایلهای متنی است، ولی دانستن تفاوت آنها مهم است.
۱. فایل متنی چیست؟
فایل متنی فایلی است که محتوا را به صورت کاراکترهای قابل خواندن برای انسان ذخیره میکند.
نمونهها:
data.txtnotes.md- کدهای پایتون:
script.py - فایلهای CSV ساده:
table.csv
اگر یک فایل متنی را با یک ویرایشگر ساده مثل Notepad یا VS Code باز کنید، معمولاً متن قابلخواندن میبینید.
ویژگیهای مهم:
- از کاراکترها تشکیل شده (حروف، اعداد، فاصله، علامتها).
- بین خطها معمولاً با کاراکتر پایان خط جدا میشود (مثل
\n). - در پایتون، وقتی فایل را در حالت متنی باز میکنیم، خودِ پایتون کار تبدیل بایتها به کاراکتر را انجام میدهد (جزئیاتش در مبحث «خواندن فایلهای متنی» میآید).
۲. فایل دودویی چیست؟
فایل دودویی (Binary) فایلی است که محتوا را به صورت بایتهای خام ذخیره میکند که مستقیماً برای انسان قابلفهم نیست.
نمونهها:
- عکسها:
image.jpg,logo.png - ویدیوها:
video.mp4 - فایلهای صوتی:
sound.mp3 - بعضی فرمتهای خاص برنامهها:
somefile.dat,database.db
اگر یک فایل دودویی را با ویرایشگر متن باز کنید، معمولاً ترکیبی از کاراکترهای نامفهوم، علامتهای عجیب و کدهای غیرقابلخواندن میبینید.
در پایتون، اگر بخواهید با فایل دودویی کار کنید (مثلاً کپی کردن یک عکس)، فایل را در حالت دودویی باز میکنید ("rb"، "wb"). جزئیات این کار در بخشهای بعدی خواهد آمد.
برای این دوره، در بیشتر مثالها با فایلهای متنی ساده کار میکنیم تا روی منطق برنامهنویسی تمرکز داشته باشیم.
فایلها و حافظهٔ موقت (RAM)
در برنامهنویسی، تفاوت مهمی وجود دارد بین:
- حافظهٔ موقت (RAM): جایی که متغیرهای پایتون هنگام اجرای برنامه ذخیره میشوند.
- حافظهٔ پایدار (مثل هارد، SSD، فلش): جایی که فایلها ذخیره میشوند.
وقتی برنامهٔ پایتون شما متوقف میشود:
- تمام دادههایی که فقط در RAM بودهاند، از بین میروند.
- دادههایی که در فایل ذخیره شدهاند، باقی میمانند.
پس اگر میخواهید:
- «نتیجهٔ» برنامهتان بعد از بسته شدن هم بماند
- اطلاعاتی را بین چند بار اجرای برنامه رد و بدل کنید
- اطلاعات را با برنامهها یا افراد دیگر به اشتراک بگذارید
باید دادهها را در فایلها ذخیره کنید.
مکان فایل: پوشه، مسیر و نام
برای اینکه برنامهٔ شما بتواند فایلی را باز کند، باید بداند کجا آن را پیدا کند. اینجا چند مفهوم مهم وجود دارد:
- پوشه (directory / folder): جعبهای که فایلها داخل آن قرار میگیرند.
- مسیر (path): آدرسی که به فایلی خاص میرسد.
- نام فایل: آخرین بخش مسیر، مثلاً
data.txt.
برای نمونه، یک مسیر در ویندوز:
C:\Users\Ali\Documents\data.txtو یک مسیر در لینوکس یا macOS:
/Users/ali/Documents/data.txtدر این زیربخش، فقط مفهوم کلی را میشناسیم. در قسمت «مسیر فایلها» در همین فصل، روش کار دقیق با مسیرها و چالشهای معمول (مثل اسلش رو به جلو و عقب) را میبینید.
نقش سیستمعامل در کار با فایل
سیستمعامل (ویندوز، لینوکس، macOS و …):
- فایلها را مدیریت میکند.
- اجازه میدهد برنامهها (مثل پایتون) فایلها را باز، خوانده و نوشته کنند.
- روی اینکه برنامهٔ شما به کدام فایلها اجازهٔ دسترسی دارد، کنترل دارد.
پایتون برای کار با فایلها از توابعی استفاده میکند که در نهایت به سیستمعامل میگویند:
- «این فایل را برای من باز کن»
- «این متن را در آن بنویس»
- «محتوایش را برایم بخوان»
شما لازم نیست جزئیات فنی سیستمعامل را بدانید؛ فقط باید بدانید:
- نام و مسیر فایل را درست مشخص کنید.
- در حالت درست (خواندن/نوشتن/…) آن را باز کنید.
- بعد از کار، آن را ببندید (یا از روشهایی استفاده کنید که خودش این کار را انجام میدهد).
فایلها در مقایسه با متغیرها
برای روشنتر شدن نقش فایلها، آنها را با متغیرها مقایسه کنیم:
- متغیر:
- در RAM نگه داشته میشود.
- با پایان اجرای برنامه از بین میرود.
- برای ذخیرهٔ موقت و محاسبه مناسب است.
- فایل:
- روی حافظهٔ پایدار ذخیره میشود.
- بعد از بسته شدن برنامه هم باقی میماند.
- برای ذخیرهٔ پایدار و به اشتراکگذاری مناسب است.
مثال ساده:
- برنامهای که میانگین نمرههای کاربر را حساب میکند و نشان میدهد، ولی ذخیره نمیکند → فقط متغیر کافی است.
- برنامهای که هر بار نمرههای جدید را به یک جدول اضافه میکند تا بعداً دوباره به آنها دسترسی داشته باشید → به فایل نیاز دارید.
انواع کاربردهای سادهٔ فایلها در پایتون
در این دوره، با انواع پیشرفتهٔ فایل (مثل فایلهای دیتابیس، فرمتهای پیچیدهٔ باینری و …) کاری نداریم. تمرکز ما روی مثالهایی مثل:
- ذخیرهٔ یادداشتها در یک فایل متنی (
notes.txt) - نگهداشتن فهرست کارها (To-Do List) در یک فایل
- ثبت لاگ سادهٔ اجرای برنامه (مثلاً
log.txt) - نوشتن نتایج محاسبات برنامه در یک فایل
در بخشهای بعدی این فصل میبینید:
- چگونه یک فایل متنی را باز کنید و بخوانید.
- چگونه در یک فایل بنویسید یا چیزی به آن اضافه کنید.
- چطور با مسیر فایلها و محل ذخیرهٔ آنها کار کنید.
- و در نهایت، چطور برنامههای سادهای بسازید که روی فایلها کار میکنند.