به قسمت دوم آموزش سازماندهی و کار با فایل ها و دایرکتوری ها در پایتون خوش آمدید . قسمت قبلی این آموزش را می توانید در اینجا بخوانید.
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) True
os.access("links.txt",os.F_OK or os.X_OK or os.R_OK or os.W_OK) False
os.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') True
os.path.getsize()
حجم فایل و دایرکتوری را به بایت نشان می دهد.
os.path.getsize('python.png') 202169
os.path.isfile()
اگر مسیر داده شده به فایل ختم شود True را بر می گرداند.
os.path.isfile("/home/milad/python.png") True
os.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") Flase
os.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]
منتظر ادامه این آموزش باشید.