از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
ایجاد و حذف دایرکتوری ها با پایتون
سرفصلهای مطلب
این مقاله با مجموعه ما ادامه می یابد روی تعامل با سیستم فایل در پایتون در مقاله های قبلی به خواندن و نوشتن فایل ها پرداخته شد. جالب اینجاست که سیستم فایل بسیار بیشتر از راهی برای ذخیره/بازیابی داده ها بر روی دیسک است. همچنین انواع مختلفی از ورودی ها مانند فایل ها، دایرکتوری ها، سوکت ها (برای بینprocess ارتباطات)، لوله های نامگذاری شده، پیوندهای نرم و سخت و همچنین فایل های خاص (دستگاه های بلوک). خواندن و نوشتن از و به آنها به روشی مشابه که در مقالات قبلی دیدیم انجام می شود.
این مقاله تمرکز دارد روی مدیریت دایرکتوری ها سیستم عامل های دیگر، مانند یونیکس/لینوکس، به جای آن از اصطلاحات متفاوتی استفاده می کنند، جایی که یک “ورود” “پوشه” نامیده می شود. در مرحله بعد، ما به شما نشان خواهیم داد که چگونه دایرکتوری کاری فعلی را شناسایی کنید، چگونه یک دایرکتوری دائمی و موقت، تک دایرکتوری و همچنین ساختارهای دایرکتوری تودرتو با زیرپوشه ها ایجاد کنید، و چگونه یک دایرکتوری را در صورت عدم نیاز حذف کنید. بنابراین، دو ماژول پایتون os
و tempfile
بیا تو بازی.
ماژول های مورد نیاز پایتون
خواندن و نوشتن فایل ها نیازی به بارگذاری یک ماژول اضافی ندارد، اما دسترسی به عملکردهای سیستم فایل (مانند مدیریت دایرکتوری ها) مستلزم استفاده از یک ماژول جداگانه است. اول، os
ماژول باید بارگذاری شود os
یک ماژول پایتون است که به بخش اصلی اکوسیستم پایتون تعلق دارد. با استفاده از یک انجام می شود import بیانیه به شرح زیر
import os
این os
ماژول حاوی اکثر روش هایی است که در طول این مقاله به آنها نیاز خواهیم داشت. با این حال، همانطور که بعدا خواهید دید روی، اگر می خواهید چیز پیشرفته تری انجام دهید، مانند ایجاد یک فایل موقت برای ذخیره داده ها، ما نیز به tempfile
مدول.
شناسایی دایرکتوری کاری فعلی
قبل از اینکه به ایجاد/حذف دایرکتوری ها بپردازیم، بیایید ببینیم که چگونه برخی از عملیات اصلی دایرکتوری را انجام دهیم، مانند تشخیص فهرست کار فعلی با استفاده از روش getcwd()
. این متد یک رشته حاوی مسیر دایرکتوری کاری شما را برمی گرداند. لیست 1 روش ادغام این روش در اسکریپت پایتون را نشان می دهد.
import os
path = os.getcwd()
print ("The current working directory is %s" % path)
لیست 1
خروجی باید چیزی شبیه به این باشد:
$ python3 cwd.py
The current working directory is /home/frank/
علاوه بر این، os
ماژول شامل موارد اضافی است getcwdb()
روش. این یکی شبیه به getcwd()
متد اما مسیر را به عنوان یک رشته باینری برمی گرداند.
چندین عملیات دایرکتوری دیگر وجود دارد که در این مقاله پوشش داده نشده است، مانند بررسی وجود فایل یا دایرکتوری. اما در حال حاضر ما حرکت می کنیم روی به هدف اصلی این مقاله
ایجاد دایرکتوری
ایجاد یک دایرکتوری واحد با استفاده از mkdir()
روش. به عنوان یک پارامتر، mkdir()
ابتدا به نام مسیر برای دایرکتوری نیاز دارد تا بتواند ایجاد شود. برای مثال کد زیر را ببینید:
import os
path = "/tmp/year"
try:
os.mkdir(path)
except OSError:
print ("Creation of the directory %s failed" % path)
else:
print ("Successfully created the directory %s " % path)
لیست 2
به خاطر داشته باشید که mkdir()
متد نمی تواند دایرکتوری های فرعی ایجاد کند روی سطح عمیق تر از یک در یک تماس واحد. برای ایجاد یک مسیر کامل باید تماس بگیرید mkdir()
یک بار در هر سطح دایرکتوری از طرف دیگر، اگر می خواهید چندین دایرکتوری را همزمان ایجاد کنید، از آن استفاده کنید makedirs()
روش به جای آن (که می توانید در آن ببینید لیست 4 زیر).
به عنوان یک پارامتر اختیاری می توانید آن را مشخص کنید حقوق دسترسی به دایرکتوری داخل شما mkdir()
زنگ زدن. تنظیم پیش فرض 777 است، به این معنی که توسط مالک، اعضای گروه و سایر کاربران نیز قابل خواندن و نوشتن است. در صورتی که به تنظیم محدودتری مانند 755 نیاز دارید (قابل خواندن و دسترسی برای همه کاربران و دسترسی نوشتن فقط توسط مالک) می توانید آن را به صورت زیر فراخوانی کنید:
import os
path = "/tmp/year"
access_rights = 0o755
try:
os.mkdir(path, access_rights)
except OSError:
print ("Creation of the directory %s failed" % path)
else:
print ("Successfully created the directory %s" % path)
لیست 3
یک نکته در مورد این کد قابل توجه است – ممکن است متوجه شده باشید که حقوق دسترسی (755 در اینجا) با استفاده از پیشوند octal مشخص شده است (0o
) که انجام می شود بنابراین نیازی نیست ابتدا عدد را به اعشار تبدیل کنید. از آنجایی که سیستمعامل مجوزهای دسترسی را به صورت هشتگانه نشان میدهد، در اینجا نیز به این صورت است.
با این حال، به عنوان مستندات پایتون برخی از سیستم ها را نادیده می گیرند mode
پارامتر و شما باید استفاده کنید os.chmod
بجای.
ایجاد دایرکتوری با زیر شاخه ها
همانطور که در بالا ذکر شد، mkdir()
متد به ما اجازه می دهد که فقط یک دایرکتوری ایجاد کنیم. برای ایجاد زیر شاخه های چند سطحی makedirs()
روش وارد عمل می شود در حقیقت، makedirs()
به گونه ای اجرا می شود که فراخوانی می کند mkdir()
برای ایجاد یک دایرکتوری پس از دیگری
به عنوان یک پارامتر makedirs()
کل مسیر ایجاد شده را می پذیرد. این روش مشابه دستور UNIX/Linux است mkdir -p
. لیست 4 نمونه ای از روش استفاده از این روش را نشان می دهد.
import os
path = "/tmp/year/month/week/day"
try:
os.makedirs(path)
except OSError:
print ("Creation of the directory %s failed" % path)
else:
print ("Successfully created the directory %s" % path)
لیست 3
ایجاد دایرکتوری موقت
تا کنون، ما ورودی های دائمی در سیستم فایل ایجاد کرده ایم. به دلایل مختلف مانند داده های پارکینگ به طور موقت می توان فقط یک فهرست موقت داشته باشد. این tempfile
ماژول شامل روش هایی است که چنین مواردی را به روشی ایمن و سازگار مدیریت می کند.
لیست 5 مثالی را نشان می دهد که از TemporaryDirectory()
روش در ترکیب با with
بیانیه. بعد از with
بیانیه دایرکتوری موقت دیگر وجود ندارد زیرا هم دایرکتوری و هم محتویات آن به طور کامل حذف شده اند.
import tempfile
with tempfile.TemporaryDirectory() as directory:
print('The created temporary directory is %s' % directory)
لیست 5
لیست 6 خروجی اسکریپت پایتون را نشان می دهد لیست 5. برای ایجاد فایل های موقت، روی سیستم های یونیکس/لینوکس سه دایرکتوری /tmp، /var/tmp و /usr/tmp امتحان شده و اولین تطبیق آن ها گرفته می شود. در این مورد فعلی دایرکتوری tmp / است که استفاده می شود.
$ python3 mkdir-temporary.py
The created temporary directory is /tmp/tmpf6o0hy3c
لیست 6
حذف دایرکتوری
حذف یک دایرکتوری حالت مخالف ایجاد یک دایرکتوری است. شما می توانید این کار را با استفاده از rmdir()
روش از os
مدول. rmdir()
به یک رشته مسیر نیاز دارد که شامل نام دایرکتوری باشد و تنها عمیق ترین ورودی رشته مسیر را حذف می کند. توجه داشته باشید که این فقط زمانی کار می کند که دایرکتوری کاملاً خالی باشد. اگر خالی نباشد، a OSError
ظهور کرده. لیست 7 کد پایتون مطابق را نشان می دهد.
import os
path = "/tmp/year"
try:
os.rmdir(path)
except OSError:
print ("Deletion of the directory %s failed" % path)
else:
print ("Successfully deleted the directory %s" % path)
لیست 7
در صورتی که بخواهید کل درخت دایرکتوری را حذف کنید rmtree()
روش از shutil
ماژول به شما در انجام این کار کمک می کند.
نتیجه
همانطور که ممکن است متوجه شده باشید، مدیریت دایرکتوری ها در پایتون بسیار ساده است. برای ایجاد و حذف این نوع ورودی فایل فقط چند خط کد از شما نیاز است.
پیوندها و مراجع
سپاسگزاریها
نویسنده مایل است تشکر کند زولکا هاتیتونگه برای حمایت او در هنگام تهیه مقاله.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-28 04:22:03