Organizing files in python - part 2

به قسمت دوم آموزش سازماندهی و کار با فایل ها و دایرکتوری ها در پایتون خوش آمدید . قسمت قبلی این آموزش را می توانید در اینجا بخوانید.os.mkdir()این متد برای ساخت دایرکتوری مورد استفاده قرار می گیرد.os.mkdir("/home/milad/photo")توجه کنید در صورتی که فقط نام دایرکتوری را بنوسید دایرکتوری در مکانی که هستید ساخته می شود. اگر دایرکتوری ای که می خواهید بسازید از قبل موجود باشد استثنا FileExistError رخ می دهد.os.makedirs()کار این متد شبیه متد قبلی هستش ساخت دایرکتوری اما با این تفاوت که شما می توانید دایرکتوری های تو در تو بسازید.os.mkdir("1/2/3")در مثال بالا دایرکتوری ۳ در درون دایرکتوری ۲ ساخته می شود ، دایرکتوری ۲ در درون دایرکتوری ۱ ساخته می شود و خود دایرکتوری ۱ در درون دایرکتوری فعلی ساخته می شود. در صورتی که این دایرکتوری ها از قبل موجود باشد استثنا رخ می دهد.os.makedirs("1/2/3") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python3.7/os.py", line 221, in makedirs mkdir(name, mode) FileExistsError: [Errno 17] File exists: '1/2/3'در صورتی که می خواهید این استثنا نشان داده نشود باید نوشت:os.makedirs("1/2/3",exist_ok=True)os.access(path, mode)برای بررسی موجود بودن فایل و دایرکتوری و همچنین بررسی مجوز دسترسی می باشد که دارای مدهای زیر می باشد:F_OK : برای بررسی موجود بودن فایل و دایرکتوری می باشدR_OK: برای بررسی مجوز خواندن می باشدW_OK: برای بررسی مجوز نوشتن می باشدX_OK: برای بررسی مجوز اجرا می باشددر صورتی که فایل یا دایرکتوری مورد نظر دارای آن مجوز باشد یا موجود باشد مقدرا True را بر می گرداند.os.access("1",os.F_OK) Trueهمچنین می توان از ترکیب این مجوزها هم استفاده کرد به صورت زیر:os.access("links.txt",os.F_OK or os.R_OK or os.W_OK) Trueos.access("links.txt",os.F_OK or os.X_OK or os.R_OK or os.W_OK) Falseos.environمتغییرهای محیطی را نشان می دهد (متغییرهای محیطی در هر سیستم عامل برای اهداف خاص خود سیستم عامل یا برنامه های جانبی تعریف و مقدار دهی شده اند). os.environ (:از اونجایی که خروجیش خیل زیاد بودش از گذاشتن صرف نظر کردماگر می خواهید فقط مقدار یک متغییر نشان داده بشود کافیست نوشت:os.environ["HOME"] "/home/milad"این متد به عنوان Mapping object هم شناخته می شود که یک دیکشنری را بر می گرداند که مثلا می توان نوشت:os.environ.get("HOME") "/home/milad"از آنجایی که گفته شد دیکشنری را برمی گرداند می توان از keys و values دیکشنری هم استفاده نمود.os.environ.keys() os.environ.values()در صورتی که متغییری وجود نداشته باشد این متد ارور می دهد.os.environ["TEST"] Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python3.7/os.py", line 678, in __getitem__ raise KeyError(key) from None KeyError: 'TEST'os.rename()برای تغییر نام فایل یا دایرکتوری می باشد. ابتدا نام فایل یا دایرکتوری که قرار است عوض بشود را بنویسید و سپس نام جدید آن را به صورت زیر:os.rename("1", "directory")در مثال بالا نام دایرکتوری ۱ که قبلا توسط متد makedirs درست کرده بودیم راه به directory تغییر دادیم.os.path.exist()این متد بررسی می کند که آیا فایل یا دایرکتوری مورد نظر موجود می باشد یا نه.os.path.exists('directory') Trueos.path.getsize()حجم فایل و دایرکتوری را به بایت نشان می دهد.os.path.getsize('python.png') 202169os.path.isfile()اگر مسیر داده شده به فایل ختم شود True را بر می گرداند.os.path.isfile("/home/milad/python.png") Trueos.path.isfile("/home/milad/directory") Falseمی توان با استفاده از ماژول ‌pathlib هم اینکار را انجام داد:import pathlib check = pathlib.Path("/home/milad/python.png") if check.is_file(): print("It's a file") It's a fileفقط توجه کنید حرف اول Path بزرگ می باشد.os.path.isdir()اگر مسیر داده شده به دایرکتوری ختم شود True را بر می گرداند.os.path.isdir("/home/milad/python.png") Flaseos.path.isdir("/home/milad/directory") Trueمی توان با استفاده از ماژول ‌pathlib هم اینکار را انجام داد:import pathlib check = pathlib.Path("/home/milad/directory") if check.is_dir(): print("It's a directory") It's a directoryفقط توجه کنید حرف اول Path بزرگ می باشد.os.path.dirname()زمانی که به این متد مسیر یک فایل یا دایرکتوری را بدهید، آدرس قبل از آن فایل یا دایرکتوری را بر می گرداند.os.path.dirname('/home/milad/Downloads/FreeBSD.iso') '/home/milad/Downloads'os.path.dirname('/home/milad/Downloads/python') '/home/milad/Downloads'os.path.split()در مسیر داده به این متد، آخرین مسیر( که دایرکتوری یا فایل است) را از بقیه مسیر جدا می کند.file_path, file_name = os.path.split("/home/milad/python.png") print(f"file path : {file_path} , file name : {file_name}") file path : /home/milad , file name : python.pngدر صورتی که بخواهید فقط نام فایل/دایرکتوری یا مسیر آن را ذخیره کنید می توانید به صورت زیر عمل کنید:dir_name = os.path.split("/home/milad/directory")[1] print(dir_name) directory برای ذخیره مسیر به جای [1] نوشته [0]منتظر ادامه این آموزش باشید.