ماندگاری فایلها
تا اینجا ما در خصوص نحوهی نوشتن برنامهها و ارتباط برقرار کردن با واحد پردازش مرکزی با استفاده از اجرای شرطی، توابع و تکرارها آشنا شدیم. ما در خصوص چگونگی ساخت و استفاده از ساختار داده در حافظهی اصلی نیز آموختیم. CPU و حافظه جاییاند که نرمافزار ما در آنها کار میکند و اجرا میشود. در اصل این منطقه همان جاییست که “فکر کردن” اتفاق میافتد.
ولی مشکل اینجاست که ما میخواهیم بحث میان سختافزارهای ما ادامه داشته باشد، اما همین که برق برود و سیستم خاموش شود، تمام آنچه در CPU و حافظه اصلی بوده پاک خواهد شد. برنامههای پایتونی ما تلاشهای تفریحیِ ناپایداری خواهند بود که از بین میروند.
در این فصل ما با حافظهی جانبی (یا فایلها) سر و کار داریم. اطلاعات در حافظهی جانبی زمانیکه سیستم خاموش میشود، از بین نمیرود؛ یا مثلا برنامهای که نوشتهایم میتواند بر روی یک حافظهی فلش کپی شده، از سیستم جدا و سپس به یک سیستم دیگر منتقل و اجرا شود.
تمرکز اصلی ما بر روی خواندن و نوشتن فایلهای متنی مانند همانهایی که در ویرایشگر متن مینویسیم، خواهد بود. در ادامه یاد خواهیم گرفت که چطور با فایلهای پایگاه داده که فایلهای باینریاند کار کنیم؛ بهخصوص آنها که برای خوانده و نوشتن شدن توسط نرمافزارهای پایگاه طراحی شدهاند.
باز کردن فایلها
وقتی قرار است که فایلی را بخوانیم یا بر روی آن بنویسیم (مثلا فایلهای روی هارد دیسک شما)، ابتدا باید فایل را باز کنیم. باز کردن فایل، برقراری ارتباط با سیستمعامل شما به حساب میآید. چرا سیستمعامل؟ چون سیستمعامل است که میداند هر فایل در کجا ذخیره شده است. زمانی که شما یک فایل را باز میکنید، از سیستمعامل میپرسید که آن فایل را از طریق نامش پیدا کرده و مطمئن شود که فایل اصلا وجود دارد. در این مثال، ما فایل mbox.txt که در همان فولدر جاری است را باز میکنیم؛ منظورمان از فولدر جاری، همان مسیریست که پایتون در آن اجرا شده است. شما میتوانید فایل را از طریق این لینک دانلود کنید:
1 2 3 4 |
http://www.py4e.com/code3/mbox.txt >>> fhand = open('mbox.txt') >>> print(fhand) <_io.TextIOWrapper name='mbox.txt' mode='r' encoding='cp1252'> |
اگر عملیات open موفقیتآمیز باشد، سیستم عامل یک file handle یا «دستگیرهی فایل» باز میگرداند. دستگیرهی فایل، خودِ دادههای موجود در فایل نیست، اما در عوض یک «دستگیره» است که ما میتوانیم با استفاده از آن، دادهها را بخوانیم. اگر فایل درخواستشده وجود خارجی داشته باشد، شما یک دستگیره خواهید داشت و اگر مجوزهای لازم را در اختیار داشته باشید، فایل خوانده خواهد شد.
اگر فایل وجود خارجی نداشته باشد، open با شکست روبرو شده و شما را به یک تریسبک مهمان خواهد کرد. در نهایت شما دستگیره، برای دسترسی به محتویات فایل، نخواهید داشت:
1 2 3 4 |
>>> fhand = open('stuff.txt') Traceback (most recent call last): File "", line 1, in FileNotFoundError: [Errno 2] No such file or directory: 'stuff.txt' |
در ادامه ما از try و except برای مدیریت موقرانه این حالت استفاده خواهیم کرد. به این صورت وقتی تلاش کردیم که یک فایلی که وجود ندارد را باز کنیم، با تریسبکِ خشنِ پایتون چشمدرچشم نشویم.
این نوشته تحت مجوز کرییتیو کامنز BY – NC و حمایت موسسه تحقیقاتی رامونا ارائه میشود. شما میتوانید با توجه به مفاد این گواهی از آن استفاده کنید.