16. پیوست

16.1. حالت تعاملی

16.1.1. مدیریت خطاها

When an error occurs, the interpreter prints an error message and a stack trace. In interactive mode, it then returns to the primary prompt; when input came from a file, it exits with a nonzero exit status after printing the stack trace. (Exceptions handled by an except clause in a try statement are not errors in this context.) Some errors are unconditionally fatal and cause an exit with a nonzero exit; this applies to internal inconsistencies and some cases of running out of memory. All error messages are written to the standard error stream; normal output from executed commands is written to standard output.

فشردن کلید وقفه (که معمولاً Control-C یا Delete است) در اعلان اصلی یا فرعی، ورودی را لغو کرده و کاربر را به اعلان اصلی بازمی‌گرداند. 1 فشردن کلید وقفه در حین اجرای یک دستور، استثنای KeyboardInterrupt را ایجاد می‌کند که می‌توان آن را با دستور try مدیریت کرد.

16.1.2. اسکریپت های اجرایی پایتون

در سیستم عامل های یونیکس مبتنی بر BSD، اسکریپت های پایتون می توانند مانند اسکریپت های شل به صورت مستقیم اجرایی شوند، با قرار دادن خط

#!/usr/bin/env python3.5

(با فرض اینکه مفسر در PATH کاربر قرار دارد) در ابتدای اسکریپت باید قرار گیرد و فایل باید به حالت قابل اجرا تنظیم شود. #! باید نخستین دو نویسه‌ی فایل باشند. در برخی پلتفرم‌ها، این خط اول باید با پایان خط به سبک یونیکس ('\n') تمام شود، نه پایان خط ویندوزی ('\r\n'). توجه داشته باشید که نویسه‌ی '#' برای آغاز یک توضیح (کامنت) در پایتون به کار می‌رود.

با استفاده از دستور chmod می‌توان به اسکریپت حالت اجرایی یا مجوز اجرا داد.

$ chmod +x myscript.py

در سیستم‌عامل ویندوز، مفهوم «حالت اجرایی» "executable mode" وجود ندارد. نصب‌کننده پایتون به‌طور خودکار فایل‌های .py را به python.exe مرتبط می‌کند تا با دوبار کلیک روی فایل پایتون، به‌عنوان اسکریپت اجرا شود. پسوند فایل همچنین می‌تواند .pyw باشد که در این صورت پنجره کنسولی که معمولاً ظاهر می‌شود، نمایش داده نمی‌شود.

16.1.3. پروندهٔ آغازین تعاملی «The Interactive Startup File»

هنگامی که به صورت تعاملی از پایتون استفاده می کنید، اجرای برخی دستورات استاندارد در هر بار شروع مفسر می تواند مفید باشد. شما می توانید این کار را با تنظیم متغیر محیطی با نام PYTHONSTARTUP به نام فایلی که حاوی دستورات شروع شما است انجام دهید. این قابلیت شبیه به ویژگی .profile در شل های یونیکس است.

این فایل فقط در جلسات تعاملی خوانده می شود، نه زمانی که پایتون دستورات را از یک اسکریپت می خواند، و نه زمانی که /dev/tty به عنوان منبع صریح دستورات داده می شود (که در غیر این صورت همچون یک جلسه تعاملی رفتار می کند). این فایل در همان فضای نامی که در آن دستورات تعاملی اجرا می شوند، اجرا می گردد بنابراین اشیایی که تعریف یا وارد می کند می توانند بدون مشخص شدن در جلسه تعاملی مورد استفاده قرار گیرند. شما می توانید درخواست ها sys.ps1 و sys.ps2 را نیز در این فایل تغییر دهید.

اگر می خواهید یک فایل راه اندازی اضافی از دایرکتوری فعلی بخوانید، می توانید این کار را در فایل راه اندازی عمومی با کدی مشابه if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()) برنامه ریزی کنید. اگر می خواهید از فایل راه اندازی در یک اسکریپت استفاده کنید، باید این کار را به طور صریح در اسکریپت انجام دهید:

import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
    with open(filename) as fobj:
        startup_file = fobj.read()
    exec(startup_file)

16.1.4. ماژول های سفارشی سازی

Python provides two hooks to let you customize it: sitecustomize and usercustomize. To see how it works, you need first to find the location of your user site-packages directory. Start Python and run this code:

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.5/site-packages'

حالا می‌توانید فایلی به نام usercustomize.py در آن دایرکتوری ایجاد کرده و هر چیزی که می‌خواهید در آن قرار دهید. این فایل روی هر بار اجرای پایتون تأثیر خواهد گذاشت، مگر اینکه پایتون با گزینه -s اجرا شود تا وارد کردن خودکار غیرفعال گردد.

sitecustomize works in the same way, but is typically created by an administrator of the computer in the global site-packages directory, and is imported before usercustomize. See the documentation of the site module for more details.

پاورقی ها

1

یک مشکل در بستهٔ «GNU Readline» ممکن است مانع این کار شود.