مسیر فایل‌ها

زمانی که نام فایل ساده‌ای مانند pi_digits.txt را به تابع open() می‌دهید پایتون در پوشه‌ای به دنبال آن می‌گردد که فایلِ در حالِ اجرای فعلی در آن قرار دارد. (که همان فایلِ .py برنامه‌ی شماست.)

بسته به نحوه‌ی سازماندهی کار شما، گاهی فایلی که به90 دنبال باز کردنِ آن هستید در پوشه‌ی فایل برنامه‌ی شما وجود ندارد. برای مثال ممکن است شما فایل برنامه‌ی خود را در پوشه‌ای به نام python_work ذخیره کنید و در این پوشه، پوشه‌ی دیگری به نام text_files بسازید تا بین فایل‌های برنامه و فایل‌های متنی تمایز قایل شوید. اگرچه text_files داخل python_work قرار دارد امّا اگر تنها نام فایلی را که در text_files قرار دارد، در open() وارد کنیم، کارگر نخواهد بود چون پایتون تنها در python_work جست‌و‌جو می‌کند و در همان‌جا متوقّف می‌شود؛ و داخلِ text_files را نمی‌گردد. برای این که پایتون در پوشه‌ای به جز پوشه‌ی محلّ ذخیره‌سازی فایل برنامه به دنبال فایلی بگردد باید یک مسیر 91 فایل ارائه کنید که به پایتون بگوید یک محلّ خاص را در سیستم شما نگاه کند.

چون text_files داخل python_work قرار دارد می‌توانید برای باز کردن فایلی در داخل آن، از یک مسیر فایل نسبی استفاده کنید. مسیر فایل نسبی به پایتون می‌گوید که محلّ واردشده را نسبت به پوشه‌ای در نظر بگیر که محلِّ ذخیره‌سازی فایلِ برنامه‌ی در حالِ اجرای فعلی است و داخل آن را ببیند. برای مثال می‌توانید به این صورت بنویسید:

1
with open('text_files/filename.txt') as file_object:

این خط از پایتون می‌خواهد که در پوشه‌ی text_files به دنبال فایل .txt مطلوب بگردد و فرض کند که text_files داخل python_work قرار دارد.

نکته
سیستم‌های ویندوزی برای نمایش مسیر 92 فایل‌ها به جای اسلش (/) از بک‌اسلش (\) استفاده می‌کند، با این حال می‌توانید در کد خود همچنان از اسلش استفاده کنید.

علاوه بر این، می‌توانید صرف نظر از جایی که برنامه‌ی فعلی ذخیره شده، به پایتون محلّ دقیق فایل را بدهید. به این مسیر فایل مطلق می‌گویند. زمانی که مسیر نسبی به کار نیامد می‌توانید از مسیر مطلق استفاده کنید. برای مثال اگر text_files را در پوشه‌ای به جز python_work قرار دهید (مثلاً پوشه‌ای به نام other_files)، دادنِ مسیری مانند 'text_files/filename.txt' به open()، کار نخواهد کرد زیرا پایتون تنها داخل python_work دنبال آن خواهد گشت. اینجا نیاز دارید که مسیر کامل را بنویسید تا برای پایتون شفّاف باشد که کجا را بگردد.

مسیرهای مطلق معمولاً از مسیرهای نسبی طولانی‌ترند پس خوب است که آن‌ها را به متغیّری نسبت دهیم و سپس آن متغیّر را به open() بدهیم:

1
2
3
file_path = '/home/ehmatthes/other_files/text_files/filename.txt'

with open(file_path) as file_object:

با به‌کارگیری مسیرهای مطلق می‌توانید فایل‌ها را از هر جایی در سیستم خود بخوانید. فعلاً ساده‌ترین کار ذخیره کردنِ فایل‌ها در همان پوشه‌ی فایل‌های برنامه است؛ یا این که آن‌ها را در پوشه‌ای مانند text_files در همان پوشه‌ی فایل‌های برنامه ذخیره کنید.

نکته
اگر در یک مسیر فایل از بک‌اسلش استفاده کنید به خطا می‌خو93 رید چون بک‌اسلش در رشته‌ها در کاراکترهای گریز استفاده می‌شود. برای مثال در مسیرِ "C:\path\to\file.txt" دنباله‌ی \t به عنوان تب تفسیر می‌شود. اگر به به‌کارگیری بک‌اسلش‌ها نیاز داشتید باید خود آن‌ها را با کاراکتر گریز به کار ببرید: "C:\\path\\to\\file.txt"