msvcrt --- روالهای مفید از رانتایم MS VC++¶
این توابع دسترسی به برخی قابلیتهای مفید در سکوهای ویندوزی را فراهم میکنند. برخی ماژولهای سطح بالاتر از این توابع برای ساخت پیادهسازیهای ویندوزی خدمات خود استفاده میکنند. برای مثال، ماژول getpass در پیادهسازی تابع getpass() از آن استفاده میکند.
مستندات بیشتر در مورد این توابع را میتوانید در مستندات API پلتفرم بیابید.
این ماژول هر دو گونهی معمولی و نویسهی پهن (wide char) از API ورودی/خروجی کنسول را پیادهسازی میکند. API معمولی تنها با نویسههای ASCII سروکار دارد و کاربرد محدودی برای برنامههای بینالمللیسازیشده دارد. باید تا جایی که ممکن است از API نویسهی پهن استفاده شود.
دسترسپذیری: Windows.
تغییر یافته در نسخهی 3.3: عملیاتهای این ماژول اکنون در مواردی که IOError پرتاب میشد، OSError پرتاب میکنند.
عملیات پرونده¶
- msvcrt.locking(fd, mode, nbytes)¶
بخشی از یک پرونده را بر اساس توصیفگر پرونده fd از رانتایم C قفل میکند. در صورت شکست،
OSErrorرا پرتاب میکند. ناحیهی قفلشدهی پرونده از موقعیت فعلی پرونده شروع شده و به اندازهی nbytes بایت ادامه مییابد و ممکن است از پایان پرونده فراتر رود. mode باید یکی از ثابتهایLK_*فهرستشده در زیر باشد. ممکن است چندین ناحیه در یک پرونده بهطور همزمان قفل شوند، اما نباید همپوشانی داشته باشند. ناحیههای مجاور با هم ادغام نمیشوند؛ باید بهصورت جداگانه از قفل خارج شوند.یک رویداد حسابرسی
msvcrt.lockingرا با آرگومانهایfd،modeوnbytesپرتاب میکند.
- msvcrt.LK_LOCK¶
- msvcrt.LK_RLCK¶
بایتهای مشخصشده را قفل میکند. اگر بایتها قفل نشوند، برنامه بلافاصله پس از ۱ ثانیه دوباره تلاش میکند. اگر پس از ۱۰ تلاش، بایتها قفل نشوند،
OSErrorپرتاب میشود.
- msvcrt.LK_NBLCK¶
- msvcrt.LK_NBRLCK¶
بایتهای مشخصشده را قفل میکند. اگر امکان قفل کردن بایتها وجود نداشته باشد،
OSErrorپرتاب میشود.
- msvcrt.LK_UNLCK¶
قفل بایتهای مشخصشده را باز میکند، که باید پیشتر قفل شده باشند.
- msvcrt.setmode(fd, flags)¶
حالت ترجمه پایان خط را برای توصیفگر پرونده fd تنظیم کنید. برای تنظیم آن به حالت متنی، flags باید
os.O_TEXTباشد؛ برای حالت دودویی، بایدos.O_BINARYباشد.
- msvcrt.open_osfhandle(handle, flags)¶
یک توصیفگر پرونده رانتایم C از دستهی پرونده handle ایجاد میکند. پارامتر flags باید OR بیتی از
os.O_APPEND،os.O_RDONLY،os.O_TEXTوos.O_NOINHERITباشد. شما میتوانید از توصیفگر پرونده برگرداندهشده بهعنوان پارامتری برایos.fdopen()استفاده کنید تا یک شیء پرونده ایجاد شود.توصیفگر پرونده بهطور پیشفرض قابل ارثبردن است. برای غیرقابل ارثبردن کردن آن، پرچم
os.O_NOINHERITرا ارسال کنید.یک رویداد حسابرسی
msvcrt.open_osfhandleرا با آرگومانهایhandleوflagsپرتاب میکند.
- msvcrt.get_osfhandle(fd)¶
دسته پرونده را برای توصیفگر پرونده fd بازمیگرداند. اگر fd شناسایی نشود،
OSErrorپرتاب میشود.یک رویداد حسابرسی
msvcrt.get_osfhandleرا با آرگومانfdپرتاب میکند.
ورودی/خروجی کنسول¶
- msvcrt.kbhit()¶
اگر فشار کلید در انتظار خوانده شدن باشد، یک مقدار غیرصفر برمیگرداند. در غیر این صورت، ۰ برمیگرداند.
- msvcrt.getch()¶
یک فشردن کلید را میخواند و نویسه حاصل را بهصورت یک رشته بایتی برمیگرداند. هیچ چیزی در کنسول بازتاب داده نمیشود. اگر فشردن کلید از قبل در دسترس نباشد، این فراخوانی مسدود میشود، اما برای فشرده شدن Enter منتظر نمیماند. اگر کلید فشردهشده یک کلید تابعی ویژه باشد، این تابع
'\000'یا'\xe0'را برمیگرداند؛ فراخوانی بعدی کد کلید را برمیگرداند. فشردن کلید Control-C را نمیتوان با این تابع خواند.
- msvcrt.getche()¶
مشابه
getch()، اما اگر فشردن کلید نشاندهنده یک نویسه قابل چاپ باشد، بازتاب داده میشود.
- msvcrt.putch(char)¶
رشته بایتی char را بدون بافرینگ در کنسول چاپ کنید.
سایر توابع¶
- msvcrt.heapmin()¶
هیپمربوط به
malloc()را مجبور میکند تا خود را پاکسازی کند و بلوکهای استفادهنشده را به سیستمعامل بازگرداند. در صورت شکست،OSErrorپرتاب میشود.
- msvcrt.set_error_mode(mode)¶
مکانی را که رانتایم C پیام خطایی را برای خطایی که ممکن است برنامه را خاتمه دهد در آن مینویسد، تغییر میدهد. mode باید یکی از ثابتهای
OUT_*فهرستشده در زیر یاREPORT_ERRMODEباشد. تنظیم پیشین را برمیگرداند یا در صورت بروز خطا -1 را برمیگرداند. فقط در ساخت اشکالزدایی پایتون در دسترس است.
- msvcrt.OUT_TO_DEFAULT¶
چاهک خطا (error sink) بر اساس نوع برنامه تعیین میشود. فقط در ساخت اشکالزدایی پایتون در دسترس است.
- msvcrt.OUT_TO_STDERR¶
مقصد خطا، جریان خطای استاندارد است. فقط در ساخت اشکالزدایی پایتون در دسترس است.
- msvcrt.OUT_TO_MSGBOX¶
مقصد خطا (Error sink) یک جعبه پیام است. تنها در ساخت اشکالزدایی پایتون در دسترس است.
- msvcrt.REPORT_ERRMODE¶
مقدار حالت خطای فعلی را گزارش میدهد. فقط در ساخت اشکالزدایی پایتون در دسترس است.
- msvcrt.CrtSetReportMode(type, mode)¶
مقصد یا مقصدهای یک نوع گزارش خاص را که توسط
_CrtDbgReport()در رانتایم MS VC++ تولید میشود، مشخص میکند. type باید یکی از ثابتهایCRT_*فهرستشده در زیر باشد. mode باید یکی از ثابتهایCRTDBG_*فهرستشده در زیر باشد. فقط در ساخت اشکالزدایی پایتون در دسترس است.
- msvcrt.CrtSetReportFile(type, file)¶
پس از اینکه از
CrtSetReportMode()برای مشخص کردنCRTDBG_MODE_FILEاستفاده کردید، میتوانید دسته پروندهای را که متن پیام را دریافت میکند، مشخص کنید. type باید یکی از ثابتهایCRT_*فهرستشده در زیر باشد. file باید دسته پروندهای باشد که میخواهید مشخص شود. فقط در ساخت اشکالزدایی پایتون در دسترس است.
- msvcrt.CRT_WARN¶
هشدارها، پیامها و اطلاعاتی که نیاز به توجه فوری ندارند.
- msvcrt.CRT_ERROR¶
خطاها، مشکلات غیرقابلبازیابی، و مسائلی که به توجه فوری نیاز دارند.
- msvcrt.CRT_ASSERT¶
شکستهای ادعا.
- msvcrt.CRTDBG_MODE_DEBUG¶
پیام را در پنجرهی خروجی اشکالزدا مینویسد.
- msvcrt.CRTDBG_MODE_FILE¶
پیام را در یک دستهی پرونده ارائهشده توسط کاربر مینویسد. باید
CrtSetReportFile()فراخوانی شود تا پرونده یا جریان مشخصی که بهعنوان مقصد استفاده میشود تعریف شود.
- msvcrt.CRTDBG_MODE_WNDW¶
یک جعبه پیام برای نمایش پیام به همراه دکمههای
Abort،RetryوIgnoreایجاد میکند.
- msvcrt.CRTDBG_REPORT_MODE¶
mode جاری برای type مشخصشده را بازمیگرداند.
- msvcrt.CRT_ASSEMBLY_VERSION¶
نسخهی CRT Assembly، از پروندهی سرآیند
crtassem.h.
- msvcrt.VC_ASSEMBLY_PUBLICKEYTOKEN¶
توکن کلید عمومی VC Assembly، از پروندهی سرآیند
crtassem.h.
- msvcrt.LIBRARIES_ASSEMBLY_NAME_PREFIX¶
پیشوند نام اسمبلی کتابخانهها (Libraries Assembly)، از پروندهی سرآیند
crtassem.h.