سیستم فایل

راحترین روش برای کار با فایل ها و انجام اعمالی چون خواندن و نوشتن فایل ها استفاده از شی file می باشد . این شی یک اتصال به فایل بر روی دیسک را ایجاد می کند . چون file یک نوع درونی (built-in) می باشد برای استفاده از آن به ماجول یا بسته خاصی نیاز نمی باشد . تمام توضیحات و مثالهای این آموزش منطبق بر سیستم عامل های هم خانواده به unix می باشد در صورتی که از سیستم عامل دیگری مانند ویندوز استفاده می کنید . احتمالا نیاز به انجام تغییراتی خواهید داشت . برای مثال برای استفاده از آدرسی دهی در کد هی پایتون و استفاده از آدرس های ویندوز باید از 2 بک اسلش استفاده گردد .

DkgCGP <a href="http://kinarxhpdinx.com/">kinarxhpdinx</a>, [url=http://mvscbqiwruxs.com/]mvscbqiwruxs[/url], [link=http://dzptvwoosaeo.com/]dzptvwoosaeo[/link], http://oceztsancond.com/

nYTI99 <a href="http://ibqbmiedpjmn.com/">ibqbmiedpjmn</a>, [url=http://ujtumujoqpmt.com/]ujtumujoqpmt[/url], [link=http://jeqsqoravuer.com/]jeqsqoravuer[/link], http://jjmkooiafwoh.com/


محتویات دایرکتوری

برای دریافت محتویات درون یک دایرکتوری از تابع listdir استفاده می شود ولی توجه داشته باشید که این تابع عضو کلاس os می باشد :


>>> os.listdir("/root/Desktop")
['Best', 'trash.desktop', 'manual-20030211.pdf', 'live_data_3601', 'PIC', 'Wing.desktop', 'mnt', 'temp', 'boot',
 'cdrw.py', 'KH', 'mozilla-firefox.desktop', 'Projects', 'Down', 'Text File', 'webs', 'BMP.desktop']

برای مشاهده محتویات دایرکتوری جاری عبارت "." را بعنوان مسیر تابع وارد کنید . اشارهای به چند نکته در مورد این تابع می کنیم . نتایج نام دایرکتوری ها و فایل ها می باشند و نه مسیر حقیقی آنها . پس در صورتی که به مسیر و آدرس واقعی هر یک نیاز داشتید باید از تابع join استفاده کنید . نکته دوم اینکه نوع اسامی برگشت داده شده (فایل ها یا دایرکتوری های) با این تابع قابل تشخیص نمی باشد . پس ابتدا خودمان تابعی می نویسیم که مسیر کامل هر عضو را برگرداند :


def print_dir(dir_path):
    for name in os.listdir(dir_path):
        print os.path.join(dir_path, name)

این تابع برای تک تک عناصر درون لیست برگشتی ار تابع listdir اجرا شده و با استفاده از تابع join مسیر اصلی آن را ایجاد و چاپ می کند :

>>> print_dir("/root/Desktop")
/root/Desktop/Best
/root/Desktop/trash.desktop
/root/Desktop/manual-20030211.pdf

همانند تابع isdir می توانید از تابع isfile برای تست نوع یک عنصر استفاده می شود و اگر نوع آن فایل بود مقدار True و در غیر اینصورت False برگشت داده می شود . این تابع عضو ماجول ios.path می باشد . تغییر نام ، انتقال ، کپی و حذف فایل ها : ماجول shutil حاوی توابعی برای انجام عملیات مختلف بر روی فایل ها می باشد . برای انتقال یک فایل از تابع move عضو این ماجول استفاده می شود :

>>> import shutil
>>> shutil.move("temp.txt", "/home/archive/")

در مثال بالا فایل temp.txt از مسیر جاری به داخل دایرکتوری archive منتقل می شود . تابع دیگر عضو همین ماجول برای کپی کردن فایل ها مورد استفاده قرار می گیرد :

>>> shutil.copy("important.txt", "/home/backups/")

و به همین صورت تابع remove برای حذف فایل مورد استفاده قرار می گیرد .

>>> shutil.remove("junk.dat")

ایجاد و انتقال دایرکتوری ها

ایجاد یک دایرکتوری نیز همانند سایر توابع بسیار ساده می باشد . مسیر ارسال شده برای این تابع باید موجود باشد در غیر اینصورت اجرای برنامه متوقف خواهد شد . در ضمن این تابع عضو کلاس os می باشد .

>>> os.mkdir("/tmp/python/test")

تابع شبیه دیگر makedirs می باشد که اگر مسیر درخواستی موجود نباشد آنها را نیز ایجاد می کند . برای مثال اگر در کد بالا دایرکتوری python موجود نبود امکان ایجاد test هم نبود ولی با استفاده از تابع makedirs هر دو ایجاد می گردند . برای حذف یک دایرکتوری خالی می توانید از دستور rmdir همانند mkdir استفاده کنید . اگر دایرکتوری خالی نبود ابتدا باید محتویات آن را حذف کنید . البته تابع دیگری به نام rmtree عضو ماجول shutil وجود دارد که قادر به حذف دایرکتوری پر و حذف همه محتویات آن می باشد .


نکته

شی file تنها برای کار با فایل ها و اشاره به یک فایل برروی دیسک بکار برده نمی شود این شی می تواند نشانگر یک ارتباط شبکه ، سخت افزار (مثلا مودم) و یا اتصال به یک برنامه در حال اجرای دیگر مورد استفاده قرار گیرد . پس فهم و مهارت در استفاده از فایل ها و انجام عملیات مختلف بر روی آنها می تواند در فهم مباحث پیچیده تر به شما کمک نماید .


صفحه قبلی: پایتون
صفحه بعدی: PyGTK