چجوری میتونم بفهمم یه فایل وجود داره یا نه، بدون اینکه از دستور try استفاده کنم؟
اگه دلیل چک کردن اینه که مثلاً اگه فایل وجود داشت، بازش کنی، بهتره از try برای باز کردن فایل استفاده کنی. چون اگه اول چک کنی و بعد بخوای بازش کنی، ممکنه فایل تو این فاصله پاک بشه یا جابجا بشه.
اگه نمیخوای فوراً فایل رو باز کنی، میتونی از os.path.isfile استفاده کنی اگه میخوای مطمئن بشی که یه فایل هست.
اگه مسیر یه فایل معمولی موجود باشه، True برمیگردونه. این تابع لینکهای نمادین رو هم دنبال میکنه، پس هم islink() و هم isfile() میتونن برای یه مسیر مشخص True باشن.
import os.path
os.path.isfile(fname)
pathlib
از پایتون 3.4 به بعد، ماژول pathlib یه رویکرد شیگرایی ارائه میده (که توی pathlib2 برای پایتون 2.7 هم برگردونده شده).
from pathlib import Path
my_file = Path("/path/to/file")
if my_file.is_file():
# file exists
برای چک کردن یه دایرکتوری، این کار رو بکن:
if my_file.is_dir():
# directory exists
برای چک کردن اینکه یه شیء Path وجود داره، بدون توجه به اینکه فایل هست یا دایرکتوری، از exists() استفاده کن:
if my_file.exists():
# path exists
همچنین میتونی از resolve(strict=True) در یک بلوک try استفاده کنی:
try:
my_abs_path = my_file.resolve(strict=True)
except FileNotFoundError:
# doesn't exist
else:
# exists