تقنية

FileType في argparse على Python 3.12: هل تعيد مسارًا أم ملفًا مفتوحًا؟

ملف مفتوح؛ argparse; FileType:r,UTF-8; --src:path; closed:False; read:bud; explicit close(); closed:True
فتح.

FileType يفتح الملف هنا؛ ليس الناتج نص المسار. [1] [2]

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

ملف مفتوح هنا؛ نغلقه صراحة. [1] [2]

  • FileType يفتح الملف هنا؛ ليس الناتج نص المسار. [1] [2]
  • على CPython 3.12.14، ملف UTF-8 مؤلف يحوي bud؛ --src بتخزين عادي وFileType("r",encoding="utf-8"). [1] [2]
  • نمرر مساره؛ يعاد ملف مفتوح، نقرأ bud ونغلقه صراحة في finally. [1] [2]
  • تحكم مستقل دون type، بالمسار نفسه: النتيجة نص يساوي المسار. [1] [2]
  • تنبه وثائق 3.12: فشل وسيط لاحق لا يغلق ملف FileType تلقائيًا؛ تقترح إدارة الملفات بعد التحليل باستخدام with. مثالنا نجاح محدد. [1]

الفتح

FileType يفتح الملف هنا؛ ليس الناتج نص المسار. [1] [2]

الضبط

على CPython 3.12.14، ملف UTF-8 مؤلف يحوي bud؛ --src بتخزين عادي وFileType("r",encoding="utf-8"). [1] [2]

قراءة وإغلاق

نمرر مساره؛ يعاد ملف مفتوح، نقرأ bud ونغلقه صراحة في finally. [1] [2]

import argparse from pathlib import Path from tempfile import TemporaryDirectory td=TemporaryDirectory() path=Path(td.name)/"sample.txt" path.write_text("bud",encoding="utf-8") own=argparse.ArgumentParser() own.add_argument("--src",type=argparse.FileType("r",encoding="utf-8")) ns=own.parse_args(["--src",str(path)]) try: print(ns.src.closed,ns.src.read()) finally: ns.src.close() print(ns.src.closed) [1] [2]

تحكم مستقل؛ argparse; type:default; --src:path; result:str; equals path:True
نص.

النص والإدارة

تحكم مستقل دون type، بالمسار نفسه: النتيجة نص يساوي المسار. [1] [2]

control=argparse.ArgumentParser() control.add_argument("--src") try: cns=control.parse_args(["--src",str(path)]) print(type(cns.src) is str,cns.src==str(path)) finally: td.cleanup() [1] [2]

تنبه وثائق 3.12: فشل وسيط لاحق لا يغلق ملف FileType تلقائيًا؛ تقترح إدارة الملفات بعد التحليل باستخدام with. مثالنا نجاح محدد. [1]

المراجع

  1. Python argparse
  2. CPython argparse

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

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