از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نام فایل را از مسیر برای هر سیستم عاملی در پایتون دریافت کنید
سرفصلهای مطلب
معرفی
یکی از چالش هایی که ممکن است هنگام کار با مسیرهای فایل با آن مواجه شوید استخراج نام فایل از مسیر است که بسته به سیستم عامل و فرمت مسیر می تواند متفاوت باشد.
در این بایت، چگونگی حل این مشکل را با استفاده از داخلی پایتون بررسی خواهیم کرد os.path
مدول. همچنین روش مدیریت فرمت های مسیرهای مختلف مورد استفاده در سیستم عامل های ویندوز و سبک یونیکس را بررسی خواهیم کرد.
با استفاده از مسیر os ماژول در پایتون
پایتون os.path
ماژول مجموعه ای از توابع را برای دستکاری مسیرهای فایل ارائه می دهد. یکی از این توابع است basename()
، که آخرین مؤلفه نام مسیر را که معمولاً نام فایل است برمی گرداند.
بیایید ببینیم چگونه کار می کند:
import os
path = '/home/user/documents/file.txt'
filename = os.path.basename(path)
print(filename)
در این حالت خروجی به صورت زیر خواهد بود:
file.txt
را basename()
تابع با تقسیم مسیر در آخرین اسلش (/
) و برگرداندن قطعه بعد از آن. این بدون در نظر گرفتن اینکه آیا مسیر با یک اسلش به پایان می رسد کار می کند.
را os.path
توابع ماژول برای استفاده با مسیرهایی با فرمت مورد استفاده توسط سیستم عاملی که کد پایتون شما در آن اجرا می شود، طراحی شده است. این بدان معناست که اگر با مسیرهایی از یک سیستم عامل دیگر کار می کنید، ممکن است با مشکلاتی مواجه شوید. به عنوان مثال، اگر کد شما روی یک سیستم عامل یونیکس اجرا می شود، ممکن است در تجزیه یک مسیر ویندوز مشکلاتی داشته باشد.
برخورد با مسیرهای فایل ویندوز
مسیرهای فایل ویندوز ممکن است کمی مشکل باشد زیرا از بک اسلش استفاده می کنند (\
) به جای اسلش (/
). اگر با مسیرهای ویندوز در پایتون کار می کنید، باید با استفاده از بک اسلش های دوبل از بک اسلش ها فرار کنید (\\
، یا با استفاده از رشته های خام (r'path\to\file'
).
در اینجا روش استخراج نام فایل از مسیر ویندوز با استفاده از os.path
مدول:
import os
path = 'C:\\Users\\user\\Documents\\file.txt'
filename = os.path.basename(path)
print(filename)
و خروجی این خواهد بود:
file.txt
برخورد با مسیرهای فایل به سبک یونیکس
مسیرهای فایل به سبک یونیکس که توسط لینوکس و macOS استفاده می شود، از اسلش استفاده می کنند (/
). این کار کار با آنها را در پایتون کمی آسان تر می کند.
در اینجا مثالی از روش استخراج نام فایل از مسیری به سبک یونیکس آورده شده است:
import os
path = '/home/user/documents/file.txt'
filename = os.path.basename(path)
print(filename)
و مانند قبل، خروجی به صورت زیر خواهد بود:
file.txt
مدیریت کاراکترهای خاص در نام فایل ها
هنگام کار با مسیرهای فایل، ممکن است با کاراکترهای خاصی در نام فایل ها برخورد کنید. این کاراکترها در صورت عدم استفاده صحیح می توانند مشکل ساز شوند. خوشبختانه پایتون os.path
ماژول ابزارهایی را در اختیار ما قرار می دهد که برای مدیریت موثر این کاراکترهای خاص نیاز داریم.
فرض کنید یک مسیر فایل با کاراکترهای خاص مانند زیر داریم:
path = "/home/user/Documents/My\ Project\ #1/file.txt"
در این مورد، بک اسلش ها (\
) برای فرار از فضاها و نماد هش (#
). اگر بخواهیم بدون در نظر گرفتن این کاراکترهای خاص نام فایل را از این مسیر استخراج کنیم، ممکن است به نتیجه نادرستی برسیم.
برای رسیدگی به این، می توانیم از os.path.basename()
عملکرد همراه با raw
به معنای واقعی کلمه (r
). را r
پیشوند قبل از string literal رشته معمولی را به یک رشته خام تبدیل می کند. در یک رشته خام، بک اسلش (\
) به عنوان شخصیت های تحت اللفظی و نه به عنوان شخصیت های فرار در نظر گرفته می شوند.
در اینجا روش انجام این کار آمده است:
import os
path = r"/home/user/Documents/My\ Project\ #1/file.txt"
filename = os.path.basename(path)
print(filename)
در این مثال، basename()
تابع به درستی شناسایی می کند file.txt
به عنوان نام فایل، علیرغم وجود کاراکترهای خاص در مسیر.
توجه داشته باشید: هنگام کار با مسیرهای فایل در پایتون، همیشه ایده خوبی است که از رشته های خام استفاده کنید (r
) برای جلوگیری از مشکلات شخصیت های فرار.
نتیجه
در این بایت، روش استخراج نام فایل ها از مسیرهای فایل در پایتون، بدون توجه به سیستم عامل یا فرمت مسیر را دیده ایم. ما روش استفاده از آن را بررسی کرده ایم os.path
ماژول برای مدیریت مسیرهای فایل به سبک ویندوز و یونیکس. ما همچنین روش استفاده از کاراکترهای خاص در نام فایلها را دیدهایم تا از بروز خطاهای سخت در هنگام کار با این نوع فایلها جلوگیری کنیم.
(برچسبها به ترجمه)# python
منتشر شده در 1402-12-28 01:08:03