os.path --- دستکاریهای رایج مسیر¶
کد منبع: Lib/genericpath.py، Lib/posixpath.py (برای POSIX) و Lib/ntpath.py (برای ویندوز).
این ماژول چند تابع مفید برای نام مسیرها پیادهسازی میکند. برای خواندن یا نوشتن پروندهها open() را ببینید، و برای دسترسی به سامانه فایلبندی، ماژول os را ببینید. میتوان پارامترهای مسیر را بهصورت رشته، بایت، یا هر شیءای که پروتکل os.PathLike را پیادهسازی میکند، ارسال کرد.
برخلاف پوستهی Unix، پایتون هیچگونه بسط مسیری را بهصورت خودکار انجام نمیدهد. توابعی مانند expanduser() و expandvars() را میتوان بهصورت صریح فراخوانی کرد، هنگامی که برنامهای بسط مسیر شبیه به پوسته را بخواهد. (ماژول glob را نیز ببینید.)
همچنین ملاحظه نمائید
ماژول pathlib اشیای مسیر سطح بالا را ارائه میدهد.
توجه
همهی این توابع، فقط اشیاء bytes یا فقط اشیاء رشته را بهعنوان پارامترهای خود میپذیرند. اگر مسیر یا نام پرونده برگردانده شود، نتیجه یک شیء از همان نوع خواهد بود.
توجه
از آنجایی که سیستمعاملهای مختلف قراردادهای متفاوتی برای نام مسیر دارند، چندین نسخه از این ماژول در کتابخانه استاندارد وجود دارد. ماژول os.path همیشه ماژول مسیر مناسب برای سیستمعاملی است که پایتون روی آن اجرا میشود، و بنابراین برای مسیرهای محلی قابل استفاده است. با این حال، اگر بخواهید مسیری را دستکاری کنید که همیشه در یکی از قالبهای مختلف است، میتوانید ماژولهای جداگانه را نیز ایمپورت کنید و از آنها استفاده کنید. همه آنها رابط یکسانی دارند:
posixpathبرای مسیرهای بهسبک یونیکسntpathبرای مسیرهای ویندوز
تغییر یافته در نسخهی 3.8: exists()، lexists()، isdir()، isfile()، islink() و ismount() اکنون برای مسیرهایی که شامل نویسهها یا بایتهایی غیرقابلبازنمایی در سطح سیستمعامل هستند، بهجای پرتاب استثنا False را برمیگردانند.
- os.path.abspath(path)¶
نسخهی نرمالشده و مطلقشده از مسیر path را برمیگرداند. در بیشتر سکوها، این معادل فراخوانی
normpath(join(os.getcwd(), path))است.On Windows the path is normalized by the operating system, therefore the result can differ from
normpath(join(os.getcwd(), path)). A drive-relative path is resolved against the current directory of the specified drive, and the drive letter is capitalized. Trailing dots and spaces are stripped. For example:>>> os.path.abspath('c:spam') 'C:\\Temp\\spam' >>> os.path.abspath('c:/temp/spam. . .') 'c:\\temp\\spam'
همچنین ملاحظه نمائید
تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.basename(path, /)¶
نام پایهی مسیر path را برمیگرداند. این دومین عنصر از جفتی است که با فرستادن path به تابع
split()برگردانده میشود. توجه داشته باشید که نتیجهی این تابع با برنامهی basename در یونیکس متفاوت است؛ در حالی که basename برای'/foo/bar/'مقدار'bar'را برمیگرداند، تابعbasename()یک رشته خالی ('') برمیگرداند.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.commonpath(paths)¶
طولانیترین زیرمسیر مشترک هر مسیر در پیمایشپذیر paths را برمیگرداند. اگر paths شامل مسیرهای مطلق و نسبی با هم باشد، اگر paths روی درایوهای مختلف باشد، یا اگر paths خالی باشد،
ValueErrorرا پرتاب میکند. برخلافcommonprefix()، این تابع یک مسیر معتبر برمیگرداند.اضافه شده در نسخهی 3.5.
تغییر یافته در نسخهی 3.6: دنبالهای از اشیاء شبهمسیر را میپذیرد.
تغییر یافته در نسخهی 3.13: اکنون میتوان هر پیمایشپذیری را ارسال کرد، نه فقط دنبالهها.
- os.path.commonprefix(list, /)¶
بلندترین پیشوند رشتهای (که بهصورت نویسهبهنویسه گرفته میشود) را برمیگرداند که پیشوند تمام رشتههای موجود در list باشد. اگر list خالی باشد، رشتهی خالی (
'') را برمیگرداند.هشدار
این تابع ممکن است مسیرهای نامعتبر برگرداند، زیرا بهصورت نویسهبهنویسه عمل میکند. اگر به پیشوند مشترک مسیر نیاز دارید، الگوریتم پیادهسازیشده در این تابع امن نیست. برای یافتن پیشوند مشترک مسیر از
commonpath()استفاده کنید.>>> os.path.commonprefix(['/usr/lib', '/usr/local/lib']) '/usr/l' >>> os.path.commonpath(['/usr/lib', '/usr/local/lib']) '/usr'
تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.dirname(path, /)¶
نام پوشهی مسیر path را برمیگرداند. این نخستین عنصر از جفتی است که با فرستادن path به تابع
split()برگردانده میشود.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.exists(path)¶
اگر path به یک مسیر موجود یا یک توصیفگر پرونده باز اشاره کند،
Trueرا برمیگرداند. برای پیوندهای نمادین شکسته،Falseرا برمیگرداند. در برخی سکوها، اگر اجازه اجرایos.stat()روی پرونده درخواستی داده نشود، این تابع ممکن استFalseرا برگرداند، حتی اگر path وجود فیزیکی داشته باشد.تغییر یافته در نسخهی 3.3: path اکنون میتواند یک عدد صحیح باشد: اگر یک توصیفگر پرونده باز باشد،
Trueبرگردانده میشود، در غیر این صورتFalse.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.lexists(path)¶
اگر path به یک مسیر موجود اشاره کند، از جمله پیوندهای نمادین شکسته،
Trueرا برمیگرداند. معادلexists()در سکوهای فاقدos.lstat()است.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.expanduser(path)¶
در یونیکس و ویندوز، آرگومان را با جایگزینی کامپوننت ابتدایی
~یا~userبا پوشهی خانگی آن کاربر برمیگرداند.در یونیکس، اگر متغیر محیطی
HOMEتنظیم شده باشد،~ابتدایی با آن جایگزین میشود؛ در غیر این صورت، پوشهی خانهی کاربر جاری از طریق ماژول توکارpwdدر پوشهی گذرواژه جستجو میشود.~userابتدایی مستقیماً در پوشهی گذرواژه جستجو میشود.در ویندوز، اگر
USERPROFILEتنظیم شده باشد، از آن استفاده خواهد شد؛ در غیر این صورت، از ترکیبی ازHOMEPATHوHOMEDRIVEاستفاده خواهد شد.~userابتدایی با بررسی اینکه آخرین کامپوننت پوشه در پوشهی خانهی کاربر جاری باUSERNAMEمطابقت دارد و جایگزینی آن در صورت تطابق، مدیریت میشود.اگر بسط ناموفق باشد یا مسیر با تیلدا آغاز نشود، مسیر بدون تغییر بازگردانده میشود.
تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
تغییر یافته در نسخهی 3.8: دیگر در ویندوز از
HOMEاستفاده نمیکند.
- os.path.expandvars(path)¶
آرگومان را پس از بسط متغیرهای محیطی برمیگرداند. زیررشتههایی به شکل
$nameیا${name}با مقدار متغیر محیطی name جایگزین میشوند. نامهای متغیر نامعتبر و ارجاعها به متغیرهای غیرموجود بدون تغییر باقی میمانند.در ویندوز، علاوه بر
$nameو${name}، بسطهای%name%نیز پشتیبانی میشوند.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.getatime(path, /)¶
زمان آخرین دسترسی به path را برمیگرداند. مقدار بازگشتی یک عدد ممیز شناور است که تعداد ثانیههای سپریشده از مبدأ زمانی را نشان میدهد (ماژول
timeرا ببینید). اگر پرونده وجود نداشته باشد یا دسترسیناپذیر باشد،OSErrorرا پرتاب میکند.
- os.path.getmtime(path, /)¶
زمان آخرین تغییر path را برمیگرداند. مقدار بازگشتی یک عدد ممیز شناور است که تعداد ثانیههای سپریشده از مبدأ زمانی را نشان میدهد (ماژول
timeرا ببینید). اگر پرونده وجود نداشته باشد یا دسترسیپذیر نباشد،OSErrorپرتاب میشود.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.getctime(path, /)¶
ctime سیستم را برمیگرداند که در برخی سیستمها (مانند Unix) زمان آخرین تغییر فراداده است و در برخی دیگر (مانند Windows)، زمان ایجاد برای path است. مقدار بازگشتی عددی است که تعداد ثانیههای سپریشده از مبدأ زمان را نشان میدهد (ماژول
timeرا ببینید). اگر پرونده وجود نداشته باشد یا غیرقابلدسترسی باشد،OSErrorرا پرتاب میکند.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.getsize(path, /)¶
اندازهی path را بر حسب بایت برمیگرداند. اگر پرونده وجود نداشته باشد یا در دسترس نباشد،
OSErrorرا پرتاب میکند.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.isabs(path, /)¶
اگر path یک مسیر مطلق باشد،
Trueبرمیگرداند. در یونیکس، این یعنی با یک اسلش آغاز میشود؛ در ویندوز یعنی با دو اسلش یا دو بکاسلش، یا با حرف درایو، دونقطه و اسلش یا بکاسلش بههمراه هم آغاز میشود.همچنین ملاحظه نمائید
تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
تغییر یافته در نسخهی 3.13: در ویندوز، اگر مسیر دادهشده دقیقاً با یک (بک)اسلش آغاز شود،
Falseبرمیگرداند.
- os.path.isfile(path)¶
اگر path یک پرونده معمولی
موجودباشد، مقدارTrueبرمیگرداند. این تابع پیوندهای نمادین را دنبال میکند، بنابراین همislink()و همisfile()میتوانند برای یک مسیر یکسان درست باشند.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.isdir(path, /)¶
اگر path یک پوشهی
موجودباشد،Trueبرمیگرداند. این تابع از پیوندهای نمادین پیروی میکند، بنابراین همislink()و همisdir()میتوانند برای یک مسیر یکسان درست باشند.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.isjunction(path)¶
اگر path به یک ورودی پوشهی
existingاشاره کند که یک اتصال (junction) باشد،Trueرا برمیگرداند. اگر اتصالها (junctions) در پلتفرم فعلی پشتیبانی نشوند، همیشهFalseرا برمیگرداند.اضافه شده در نسخهی 3.12.
- os.path.islink(path)¶
اگر path به یک ورودی پوشهی
existingاشاره کند که یک پیوند نمادین باشد،Trueرا برمیگرداند. اگر رانتایم پایتون از پیوندهای نمادین پشتیبانی نکند، همیشهFalseرا برمیگرداند.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.ismount(path)¶
اگر مسیر path یک نقطه اتصال <mount point> باشد، مقدار
Trueرا برمیگرداند: نقطهای در یک سامانه فایلبندی که سامانه فایلبندیای دیگر در آن سوار شده است. در POSIX، این تابع بررسی میکند که آیا والد path، یعنیpath/..، روی دستگاهی متفاوت از path قرار دارد، یا اینکهpath/..و path به یک i-node روی همان دستگاه اشاره میکنند --- این باید نقاط اتصال را برای تمام انواع Unix و POSIX تشخیص دهد. این تابع نمیتواند اتصالهای مقیدسازی (bind mounts) را روی همان سامانه فایلبندی بهطور قابلاطمینان تشخیص دهد. در سیستمهای لینوکس، این تابع همیشه برای زیرحجمهای btrfs مقدارTrueرا برمیگرداند، حتی اگر نقاط اتصال نباشند. در ویندوز، ریشهی حرف درایو و UNC اشتراکی همیشه نقاط اتصال هستند، و برای هر مسیر دیگرGetVolumePathNameفراخوانی میشود تا بررسی شود که آیا با مسیر ورودی متفاوت است یا خیر.تغییر یافته در نسخهی 3.4: پشتیبانی برای تشخیص نقاط اتصال غیرریشه در ویندوز افزوده شد.
تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.isdevdrive(path)¶
اگر مسیر path روی یک درایو توسعهی ویندوز (Windows Dev Drive) قرار داشته باشد،
Trueرا برمیگرداند. درایو توسعه برای سناریوهای توسعهدهندگان بهینهسازی شده است و عملکرد سریعتری برای خواندن و نوشتن پروندهها ارائه میدهد. توصیه میشود از آن برای کد منبع، پوشههای ساخت موقت، نهانگاههای بسته و سایر عملیاتهای فشردهی IO استفاده شود.ممکن است برای یک مسیر نامعتبر خطایی پرتاب کند، برای مثال مسیری که درایو قابلتشخیصی ندارد، اما در پلتفرمهایی که از درایوهای توسعه (Dev Drives) پشتیبانی نمیکنند،
Falseرا برمیگرداند. برای اطلاعات درباره فعالسازی و ایجاد درایوهای توسعه (Dev Drives)، مستندات ویندوز را ببینید.اضافه شده در نسخهی 3.12.
تغییر یافته در نسخهی 3.13: این تابع اکنون در تمام پلتفرمها در دسترس است و در پلتفرمهایی که از Dev Drives پشتیبانی نمیکنند، همیشه
Falseرا برمیگرداند
- os.path.isreserved(path)¶
اگر path یک مسیر رزروشده در سیستم فعلی باشد،
Trueرا برمیگرداند.در ویندوز، نامهای پرونده رزروشده شامل مواردی میشوند که با فاصله یا نقطه پایان مییابند؛ مواردی که شامل دونقطه (یعنی جریانهای پرونده مانند "name:stream")، وایلدکارد (یعنی
'*?"<>')، پایپ یا نویسههای کنترلی ASCII هستند؛ و همچنین نامهای دستگاه DOS مانند "NUL"، "CON"، "CONIN$"، "CONOUT$"، "AUX"، "PRN"، "COM1" و "LPT1".توجه
این تابع قواعد مربوط به مسیرهای رزروشده در بیشتر سیستمهای ویندوزی را بهصورت تقریبی پیادهسازی میکند. این قواعد در طول زمان در نسخههای مختلف ویندوز تغییر میکنند. این تابع ممکن است در نسخههای آیندهی پایتون، با در دسترس قرار گرفتن گستردهی تغییرات این قواعد، بهروزرسانی شود.
دسترسپذیری: Windows.
اضافه شده در نسخهی 3.13.
- os.path.join(path, /, *paths)¶
یک یا چند بخش مسیر را بهصورت هوشمندانه به هم میپیوندد. مقدار بازگشتی، حاصل الحاق path و همهی اعضای *paths است؛ بهطوریکه پس از هر بخش غیرخالی، به جز آخرین بخش، دقیقاً یک جداکنندهی پوشه قرار میگیرد. یعنی نتیجه تنها در صورتی با یک جداکننده پایان مییابد که آخرین بخش یا خالی باشد یا با یک جداکننده پایان یابد.
اگر یک بخش مسیر مطلق باشد (که در ویندوز به هر دو درایو و ریشه نیاز دارد)، تمام بخشهای پیشین نادیده گرفته میشوند و اتصال از بخش مسیر مطلق ادامه مییابد. برای مثال، در لینوکس:
>>> os.path.join('/home/foo', 'bar') '/home/foo/bar' >>> os.path.join('/home/foo', '/home/bar') '/home/bar'
در ویندوز، هنگام مواجهه با یک بخش مسیر ریشهدار (مثلاً
r'\foo')، درایو بازنشانی نمیشود. اگر یک بخش مسیر روی درایو دیگری باشد یا یک مسیر مطلق باشد، تمام بخشهای پیشین نادیده گرفته میشوند و درایو بازنشانی میشود. برای مثال:>>> os.path.join('c:\\', 'foo') 'c:\\foo' >>> os.path.join('c:\\foo', 'd:\\bar') 'd:\\bar'
توجه داشته باشید که چون برای هر درایو یک پوشه جاری وجود دارد،
os.path.join("c:", "foo")مسیری نسبی به پوشه جاری در درایوC:را نشان میدهد (c:foo)، نهc:\foo.تغییر یافته در نسخهی 3.6: یک شیء شبهمسیر را برای path و paths میپذیرد.
- os.path.normcase(path, /)¶
بزرگی و کوچکی حروف یک مسیر را عادیسازی میکند. در ویندوز، تمام نویسههای مسیر را به حروف کوچک تبدیل میکند و همچنین اسلشهای رو به جلو را به اسلشهای رو به عقب تبدیل میکند. در سایر سیستمعاملها، مسیر را بدون تغییر برمیگرداند.
تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.normpath(path)¶
با حذف جداکنندههای اضافی و ارجاعهای سطح بالاتر، مسیرنام را هنجار کنید، بهطوری که
A//B،A/B/،A/./BوA/foo/../Bهمگی بهA/Bتبدیل شوند. این دستکاری رشته ممکن است معنای مسیری را که شامل پیوندهای نمادین است تغییر دهد. در ویندوز، اسلشهای رو به جلو را به اسلشهای رو به عقب تبدیل میکند. برای هنجارسازی بزرگی و کوچکی حروف، ازnormcase()استفاده کنید.توجه
در سیستمهای POSIX، مطابق با IEEE Std 1003.1 2013 Edition; 4.13 Pathname Resolution، اگر یک مسیرنام دقیقاً با دو اسلش آغاز شود، اولین کامپوننت پس از نویسههای پیشرو ممکن است بهصورت تعریفشده توسط پیادهسازی تفسیر شود، اگرچه بیش از دو نویسهی پیشرو باید بهعنوان یک نویسهی واحد در نظر گرفته شود.
تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.realpath(path, /, *, strict=False)¶
Return the canonical path of the specified filename, eliminating any symbolic links encountered in the path (if they are supported by the operating system). On Windows, this function will also resolve MS-DOS (also called 8.3) style names such as
C:\\PROGRA~1toC:\\Program Files. The returned path uses the case reported by the operating system, which can differ from the case of path, in particular the drive letter is capitalized.بهطور پیشفرض، مسیر تا نخستین کامپوننتی که وجود ندارد، یک حلقهی پیوند نمادین است، یا ارزیابی آن باعث پرتاب
OSErrorمیشود، ارزیابی میشود. همهی چنین کامپوننتهایی بدون تغییر به بخش موجود مسیر افزوده میشوند.برخی از خطاهایی که به این روش مدیریت میشوند، شامل «دسترسی رد شد»، «پوشه نیست» یا «آرگومان نامعتبر برای تابع داخلی» هستند. بنابراین، مسیر حاصل ممکن است مفقود یا دسترسیناپذیر باشد، ممکن است همچنان شامل پیوندها یا حلقهها باشد، و ممکن است از اجزایی که پوشه نیستند عبور کند.
این رفتار را میتوان با آرگومانهای کلیدواژهای تغییر داد:
اگر strict برابر
Trueباشد، اولین خطای مواجهشده هنگام ارزیابی مسیر دوباره پرتاب میشود. بهویژه، اگر path وجود نداشته باشد،FileNotFoundErrorپرتاب میشود، یا اگر به دلایل دیگر در دسترس نباشد، یکOSErrorدیگر پرتاب میشود.اگر strict برابر با
os.path.ALLOW_MISSINGباشد، خطاهایی غیر ازFileNotFoundErrorدوباره پرتاب میشوند (مانندstrict=True). بنابراین، مسیر بازگرداندهشده شامل هیچ پیوند نمادینی نخواهد بود، اما ممکن است پرونده نامبرده و برخی از پوشههای والد آن موجود نباشند.توجه
این تابع رویهی سیستمعامل برای کانونیکالکردن یک مسیر را شبیهسازی میکند؛ این رویه در Windows و UNIX از نظر نحوهی تعامل پیوندها و کامپوننتهای بعدی مسیر کمی تفاوت دارد.
API های سیستمعامل در صورت نیاز مسیرها را بهصورت کانونیکال درمیآورند، بنابراین معمولاً نیازی به فراخوانی این تابع نیست.
تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
تغییر یافته در نسخهی 3.8: پیوندهای نمادین و نقاط اتصال (junctions) اکنون در ویندوز حل میشوند.
تغییر یافته در نسخهی 3.10: پارامتر strict افزوده شد.
تغییر یافته در نسخهی 3.14: مقدار
ALLOW_MISSINGبرای پارامتر strict افزوده شد.
- os.path.ALLOW_MISSING¶
مقدار ویژهای که برای آرگومان strict در
realpath()استفاده میشود.اضافه شده در نسخهی 3.14.
- os.path.relpath(path, start=os.curdir)¶
مسیر پرونده نسبی به path را از پوشه جاری یا از یک پوشه start اختیاری بازمیگرداند. این یک محاسبهی مسیر است: برای تأیید وجود یا ماهیت path یا start به سامانه فایلبندی دسترسی پیدا نمیشود. در ویندوز، هنگامی که path و start روی درایوهای متفاوت باشند،
ValueErrorپرتاب میشود.مقدار پیشفرض start برابر
os.curdirاست.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.samefile(path1, path2, /)¶
اگر هر دو آرگومان مسیرنام به یک پرونده یا پوشهی یکسان اشاره کنند،
Trueرا برمیگرداند. این امر با شمارهی دستگاه و شمارهی i-node تعیین میشود و در صورتی که فراخوانیos.stat()روی هر یک از مسیرنامها ناموفق باشد، یک استثنا پرتاب میشود.تغییر یافته در نسخهی 3.2: پشتیبانی از ویندوز افزوده شد.
تغییر یافته در نسخهی 3.4: ویندوز اکنون از همان پیادهسازیِ تمامی پلتفرمهای دیگر استفاده میکند.
تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.sameopenfile(fp1, fp2)¶
اگر توصیفگرهای پرونده fp1 و fp2 به یک پرونده اشاره کنند،
Trueرا برمیگرداند.تغییر یافته در نسخهی 3.2: پشتیبانی از ویندوز افزوده شد.
تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.samestat(stat1, stat2, /)¶
اگر تاپلهای stat stat1 و stat2 به یک پرونده یکسان اشاره کنند،
Trueرا برمیگرداند. این ساختارها ممکن است توسطos.fstat()،os.lstat()یاos.stat()برگردانده شده باشند. این تابع، مقایسهی زیربناییای را پیادهسازی میکند که توسطsamefile()وsameopenfile()استفاده میشود.تغییر یافته در نسخهی 3.4: پشتیبانی از ویندوز افزوده شد.
- os.path.split(path, /)¶
مسیر path را به یک جفت،
(head, tail)تقسیم میکند، که در آن tail آخرین کامپوننت مسیر و head همهچیز پیش از آن است. بخش tail هرگز شامل اسلش نمیشود؛ اگر path به اسلش ختم شود، tail خالی خواهد بود. اگر هیچ اسلشی در path وجود نداشته باشد، head خالی خواهد بود. اگر path خالی باشد، هر دو head و tail خالی هستند. اسلشهای پایانی از head حذف میشوند، مگر اینکه ریشه باشد (فقط یک یا چند اسلش). در همهی حالات،join(head, tail)مسیری به همان مکان path برمیگرداند (اما ممکن است رشتهها متفاوت باشند). همچنین توابعjoin()،dirname()وbasename()را ببینید.تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.splitdrive(path, /)¶
مسیر path را به یک جفت
(drive, tail)تقسیم میکند که در آن drive یا یک نقطهی اتصال است یا رشتهی خالی. در سیستمهایی که از مشخصات درایو استفاده نمیکنند، drive همیشه رشتهی خالی خواهد بود. در همهی موارد،drive + tailهمان path خواهد بود.در ویندوز، یک مسیر را به درایو/نقطه اشتراک UNC و مسیر نسبی تقسیم میکند.
اگر مسیر شامل حرف درایو باشد، drive شامل همهچیز تا خود دونقطه خواهد بود:
>>> splitdrive("c:/dir") ("c:", "/dir")
اگر مسیر حاوی یک مسیر UNC باشد، درایو حاوی نام میزبان و اشتراک خواهد بود:
>>> splitdrive("//host/computer/dir") ("//host/computer", "/dir")
تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.splitroot(path, /)¶
مسیر path را به یک تاپل ۳ آیتمی
(drive, root, tail)تقسیم میکند که در آن drive نام دستگاه یا نقطه اتصال است، root رشتهای از جداکنندهها بعد از drive است، و tail همهچیز بعد از root است. هر یک از این آیتمها ممکن است رشته خالی باشد. در تمام حالتها،drive + root + tailبا path یکسان خواهد بود.در سیستمهای POSIX، drive همیشه خالی است. root ممکن است خالی باشد (اگر path نسبی باشد)، یک اسلش رو به جلو باشد (اگر path مطلق باشد)، یا دو اسلش رو به جلو باشد (تعیینشده توسط پیادهسازی، طبق IEEE Std 1003.1-2017; 4.13 Pathname Resolution.) برای مثال:
>>> splitroot('/home/sam') ('', '/', 'home/sam') >>> splitroot('//home/sam') ('', '//', 'home/sam') >>> splitroot('///home/sam') ('', '/', '//home/sam')
در ویندوز، drive ممکن است خالی، نام حرف درایو، اشتراک UNC یا نام دستگاه باشد. root ممکن است خالی، اسلش رو به جلو یا اسلش رو به عقب باشد. برای مثال:
>>> splitroot('C:/Users/Sam') ('C:', '/', 'Users/Sam') >>> splitroot('//Server/Share/Users/Sam') ('//Server/Share', '/', 'Users/Sam')
اضافه شده در نسخهی 3.12.
- os.path.splitext(path, /)¶
مسیر path را به یک جفت
(root, ext)تقسیم میکند، بهطوری کهroot + ext == pathباشد و پسوند، ext، خالی باشد یا با یک نقطه آغاز شود و حداکثر یک نقطه داشته باشد.اگر مسیر فاقد پسوند باشد، ext برابر
''خواهد بود:>>> splitext('bar') ('bar', '')
اگر مسیر شامل یک پسوند باشد، آنگاه ext روی این پسوند، از جمله نقطه آغازین، تنظیم میشود. توجه داشته باشید که نقطههای پیشین نادیده گرفته میشوند:
>>> splitext('foo.bar.exe') ('foo.bar', '.exe') >>> splitext('/foo/bar.exe') ('/foo/bar', '.exe')
نقطههای آغازین آخرین کامپوننت مسیر، بخشی از ریشه در نظر گرفته میشوند:
>>> splitext('.cshrc') ('.cshrc', '') >>> splitext('/foo/....jpg') ('/foo/....jpg', '')
تغییر یافته در نسخهی 3.6: یک path-like object را میپذیرد.
- os.path.supports_unicode_filenames¶
Trueاگر بتوان از رشتههای یونیکدی دلخواه بهعنوان نام پرونده استفاده کرد (در چارچوب محدودیتهای اعمالشده توسط سامانه فایلبندی).