تقنية

ملف الوسيطات في argparse: هل تُفصل كلمات السطر تلقائيًا؟

سطر واحد؛ argparse; fromfile_prefix_chars:"@"; item,nargs:"+"; file:"bud leaf\n"; item:["bud leaf"]; len:1
سطر.

افتراضيًا، كل سطر ملف وسيطة واحدة هنا. [1] [2]

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

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

  • افتراضيًا، كل سطر ملف وسيطة واحدة هنا. [1] [2]
  • على CPython 3.12.14، نفعّل fromfile_prefix_chars="@" ونعرّف item مع nargs="+"؛ دون تخصيص تحويل السطر. [1] [2]
  • ملف بسطر bud leaf، ثم نهاية سطر، يعطي item=["bud leaf"] وطولًا 1 عند تقديم مرجعه @. [1] [2]
  • التحويل الافتراضي يعيد [arg_line]؛ يحفظ الفراغ، ثم يجمع nargs="+" الوسيطات في قائمة. [1] [2]
  • تحكم مستقل بالضبط نفسه: bud ثم leaf في سطرين يعطي item=["bud","leaf"] وطولًا 2. [1] [2]

السطر وسيطة

افتراضيًا، كل سطر ملف وسيطة واحدة هنا. [1] [2]

قراءة الملف

على CPython 3.12.14، نفعّل fromfile_prefix_chars="@" ونعرّف item مع nargs="+"؛ دون تخصيص تحويل السطر. [1] [2]

فراغ داخل السطر

ملف بسطر bud leaf، ثم نهاية سطر، يعطي item=["bud leaf"] وطولًا 1 عند تقديم مرجعه @. [1] [2]

import argparse from pathlib import Path from tempfile import TemporaryDirectory with TemporaryDirectory() as td: path=Path(td)/"args.txt" path.write_text("bud leaf\n",encoding="utf-8") own=argparse.ArgumentParser(fromfile_prefix_chars="@") own.add_argument("item",nargs="+") ns=own.parse_args(["@"+str(path)]) print(ns.item,len(ns.item)) [1] [2]

سطران؛ تحكم مستقل؛ argparse; fromfile_prefix_chars:"@"; item,nargs:"+"; file:"bud\nleaf\n"; item:["bud","leaf"]; len:2
سطران.

سطران مستقلان

التحويل الافتراضي يعيد [arg_line]؛ يحفظ الفراغ، ثم يجمع nargs="+" الوسيطات في قائمة. [1] [2]

with TemporaryDirectory() as td: path=Path(td)/"args.txt" path.write_text("bud\nleaf\n",encoding="utf-8") control=argparse.ArgumentParser(fromfile_prefix_chars="@") control.add_argument("item",nargs="+") cns=control.parse_args(["@"+str(path)]) print(cns.item,len(cns.item)) [1] [2]

تحكم مستقل بالضبط نفسه: bud ثم leaf في سطرين يعطي item=["bud","leaf"] وطولًا 2. [1] [2]

المراجع

  1. Python argparse
  2. CPython argparse

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

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