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)

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]


منتظر ادامه این آموزش باشید.