8 روش برای بررسی وجود فایل در پایتون

امیرحسین بیگدلو 4 ماه قبل

چطور با استفاده از پایتون بفهمیم که آیا یک فایل یا دایرکتوری وجود دارد یا نه؟

وابستگی پایتون به فایلهای خارجی جنبه مهمی است، عاقلانه است که قبل از اجرای هرگونه کدی که مربوط به فایلها است، چک کنید که آیا فایل وجود دارد یا نه؟!

 

هر توسعه دهنده ای نیاز به ایجاد کدهای بازگشتی را درک می کند ، که می تواند یک برنامه اولیه را در صورت عدم رعایت شرایط از شکست نجات دهد. در پایتون ، چندین راه برای بررسی وجود فایل وجود دارد. در اینجا بهترین روش هایی است که باید در مورد آنها بدانید.

 


 

1. دستور try...except

جمله try...except دستور را بررسی می کند و خروجی تولید می کند. در کد زیر، عبارت try تلاش می کند تا یک فایل (testfile.txt) را باز کند. اگر پردازنده پایتون بتواند فایل را پیدا کند، فایل را باز کرده و نتیجه را چاپ می کند فایل باز است و برای استفاده در دسترس است.

try:
    f = open('testfile.txt')
    print("File is available for use")
    f.close()
except IOError:
    print('File is not accessible')

بررسی وجود فایل با ثطزثحفهخدih

اگر با خطایی مواجه شود، نتیجه را چاپ می کند فایل در دسترس نیست. هنگامی که کد کامل کامپایل و اجرا شد، در صورت باز شدن فایل، بسته می شود.

اگر با try...except آشنا نیستید پیشنهاد میکنیم ویدیو توضیح مدیریت خطاها در پایتون را ببینید.


 

2. متد os.path.isfile(path)

پایتون دارای یک ماژول داخلی به نام os است که می توان از آن برای تعامل با فایل ها، پوشه ها و فهرست های زیرین استفاده کرد. از متد os.path.isfile() پایتون می توان برای بررسی دایرکتوری و وجود فایل خاص استفاده کرد.

 

اولین قدم وارد کردن تابع داخلی با استفاده از کتابخانه import os.path است. دستور بعدی بررسی می کند که آیا فایل در مکان خاصی وجود دارد یا خیر.

import os.path
os.path.isfile(r"C:\Users\Wini Bhalla\Desktop\Python test file.txt")

بررسی وجود فایل در پایتون با isfile

خروجی True را برمی گرداند ، زیرا فایل در مکان خاصی وجود دارد. اگر فایل وجود نداشته باشد، پایتون False را برمی گرداند.

در اینجا پیشنهاد میکنیم ویدیو آموزش ماژول os در پایتون را ببینید.


 

3. متد Os.path.exists(path)

به دلایل مشابه، کتابخانه os می تواند برای بررسی وجود دایرکتوری در سیستم شما مورد استفاده قرار گیرد.

Import os.path
os.path.exists(r"C:\Users\Wini Bhalla\Desktop\test")

بررسی وجود فایل در پایتون با exists

درست مانند مرحله قبل، اگر دایرکتوری/پوشه در مسیر سیستم مشخص شده یافت شود ، پایتون True را باز می گرداند و در صورت عدم یافتن پوشه/دایرکتوری، False.


 

4. متد Os.Path.Isdir(path)

os.path.isdir () یک تابع فرعی از کتابخانه os است. تنها تفاوت در این است که این دستور فقط برای دایرکتوری ها کار می کند. همانطور که انتظار می رفت ، استفاده از این نحو بر اساس وجود دایرکتوری ها ، مقدار بولین را برمی گرداند.

 

به عنوان مثال:

import os
os.path.isdir(r"C:\Users\Wini Bhalla\Desktop\OS")

خروجی True است ، زیرا پوشه/دایرکتوری در مسیر مشخص شده وجود دارد.

بررسی وجود فایل در پایتون با Isdir


 

5. متد Pathlib.path.exists()

پایتون 3.4 و نسخه های بالاتر ماژول Pathlib را ارائه می دهد که می توان آن را با استفاده از import وارد کرد. Pathlib عملکردهای لازم را در یک مکان قرار می دهد و از طریق متدهای مختلف استفاده از آن را با شی مسیر در دسترس قرار می دهد.

import pathlib

file = pathlib.Path(r"C:\Users\Wini Bhalla\Desktop\Python test file.txt")

if file.exists ():
    print ("File exists")
else:
    print ("File does not exist")

بررسی وجود فایل با پایتون با exists

با توجه به وجود فایل، خروجی نمایش می دهد که آیا فایل در مسیر مشخص شده وجود دارد یا نه. در حالت ایده آل، کد موجود در دستور چاپ را می توان طبق نیاز برنامه تغییر داد.


 

6. متد Os.listdir(path)

متد listdir در پایتون لیستی از تمام فایل های موجود در یک فهرست خاص را که توسط کاربر مشخص شده است، برمی گرداند. با این حال ، این متد هیچ فایل موجود در زیر پوشه ها را بر نمی گرداند.

 

متد listdir فقط یک پارامتر، مسیر فایل را می پذیرد. در حالت ایده آل، مسیر فایل نام فایلها و پوشه هایی است که می خواهید بازیابی کنید.

os.listdir(path)

 

در مثال زیر، می توانید یک حلقه ایجاد کنید تا تمام پرونده های موجود در دایرکتوری را مرور کنید و سپس وجود فایل مشخص شده با دستور if را بررسی کنید.

import os

path = r'C:\Users\Wini Bhalla\Desktop'
files = os.listdir(path)

print (files)

 

این کد لیستی از فایل های موجود در دایرکتوری فعلی را چاپ می کند.

import os

path = r'C:\Users\Wini Bhalla\Desktop' files = os.listdir(path)

for f in files:
    if f == "test.txt":
        print("File exists")
else:
    print("File does not exist")

بررسی وجود فایل با پایتون و متد listdir

بعلاوه ، هنگامی که حلقه اجرا می شود ، عملکرد listdir همراه با منطق دستور if بسته به شرایط منتقل شده در دستور print ، لیست فایلها را دور می زند و نتایج را چاپ می کند.


 

7. ماژول Glob

ماژول glob همه نامهای مسیر را با پارامترهای مشخص شده مطابقت می دهد و به طور مختصر به شما امکان دسترسی به سیستم فایل را می دهد. از آنجا که glob برای مطابقت الگو استفاده می شود ، می توانید از آن برای بررسی وضعیت فایل استفاده کنید.

 

در صورت یافتن فایل ، کد True و در غیر اینصورت False برمی گردد.

import glob

if glob.glob(r"C:\Users\Wini Bhalla\Desktop\test.txt"):
    print ("File exist")
else:
    print("File does not exist")

 

در صورت یافتن فایل ، خروجی این کد نتیجه را چاپ می کند:

بررسی وجود فایل در پایتون با ماژول glob


 

8. ماژول Sub-process

دستور test در ماژول sub-process یک روش کارآمد برای آزمایش وجود فایل ها و فهرست ها است. دستورات آزمایشی فقط در ماشینهای مبتنی بر یونیکس کار می کنند و نه در سیستم عاملهای مبتنی بر Windows.

 

test -e: بررسی وجود یک مسیر

test -f: بررسی وجود یک فایل

test -d: بررسی وجود یک دایرکتوری

 

بررسی وجود مسیر با sub-process

from subprocess import run
run(['test', '-e', 'testfile.txt']).returncode == 0
run(['test', '-e', 'im-not-here.txt']).returncode == 0

این کد تابع test را به نام '-e' برای تایید وجود یک مسیر صدا میزند. تابع False را برای یک مسیر نامعتبر نشان می دهد.

 

بررسی وجود فایل با sub-process

run(['test', '-f', 'testfile.txt']).returncode == 0
run(['test', '-f', 'testdirectory']).returncode == 0

تابع '-f' وجود یک فایل را آزمایش می کند و False را برای یک دایرکتوری برمی گرداند.

 

بررسی وجود دایرکتوری با sub-process

run(['test', '-d', 'testfile.txt']).returncode == 0
run(['test', '-d', 'testdirectory']).returncode == 0

تابع '-d' وجود یک دایرکتوری را آزمایش می کند و False را برای هرگونه درخواست فایل در دستور test برمی گرداند.

 


 

برای یافتن فایل های خود از کدام فرمان استفاده کنید؟

پایتون یک زبان نسبتاً آسان برای استفاده است و گزینه های زیادی را در اختیار کاربران نهایی قرار می دهد. برای بررسی وجود فایل (ها) ، می توانید از هر یک از روشهای ذکر شده در بالا استفاده کنید.

 

با این حال ، اگر مبتدی هستید ، همیشه راه هایی برای یادگیری پایتون وجود دارد. از آنجا که پایتون زبان وسیعی است ، بهتر است مدتی را صرف درک تفاوت های ظریف و طیف وسیعی از دستورات آن کنید.

اگر ویدیو بالا را دوست داشتید پیشنهاد میکنیم به مطالب زیر هم سر بزنید:

آموزش ماژول platform در پایتون

آموزش ماژول shutil در پایتون

ارزیابی class variableهای پایتون

مشکل سازگاری importها در پایتون

مهم ترین تابع‌ های پایتون که باید بدانید

مطالب مشابه



مونگارد