تقنية

FileType في argparse: هل الشرطة تفتح ملفًا اسمه -؟

الإدخال القياسي؛ FileType("r"); input:"-"; stream is sys.stdin:True; read:none; close:none
مورد.

الشرطة وحدها قيمة خاصة هنا. [1] [2]

الخلاصة السريعة

لا؛ تعيد الإدخال القياسي هنا. [1] [2]

  • على CPython 3.12.14، نستدعي FileType("r") مباشرةً بالنص "-". [1] [2]
  • الناتج هو sys.stdin الحالي نفسه؛ لا يفتح اسم ملف بهذا النص. [1] [2]
  • نقارن الهوية فقط؛ لا نقرأ الإدخال القياسي أو نغلقه. [1] [2]
  • مسار كامل لملف مؤلف اسمه - ومحتواه bud يفتح ملفًا آخر. [1] [2]
  • نقرأ bud ونغلق الملف في finally؛ لا نختبر FileType للكتابة. [1] [2]

الاستدعاء

على CPython 3.12.14، نستدعي FileType("r") مباشرةً بالنص "-". [1] [2]

هوية المورد

الناتج هو sys.stdin الحالي نفسه؛ لا يفتح اسم ملف بهذا النص. [1] [2]

مقارنة دون قراءة

نقارن الهوية فقط؛ لا نقرأ الإدخال القياسي أو نغلقه. [1] [2]

import argparse,sys stream=argparse.FileType("r")("-") print(stream is sys.stdin) [1] [2]

ملف مستقل؛ FileType("r"); input:<path>; name:-; content:bud; file is sys.stdin:False; close:explicit
ملف.

مسار كامل

مسار كامل لملف مؤلف اسمه - ومحتواه bud يفتح ملفًا آخر. [1] [2]

from pathlib import Path from tempfile import TemporaryDirectory with TemporaryDirectory() as td: path=Path(td)/"-" path.write_text("bud",encoding="utf-8") file=argparse.FileType("r",encoding="utf-8")(str(path)) try: print(file is sys.stdin,file.read()) finally: file.close() [1] [2]

نقرأ bud ونغلق الملف في finally؛ لا نختبر FileType للكتابة. [1] [2]

المراجع

  1. Python argparse
  2. CPython argparse

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.