@@ -12,7 +12,7 @@ msgid ""
1212msgstr ""
1313"Project-Id-Version :Python 3.12\n "
1414"Report-Msgid-Bugs-To :\n "
15- "POT-Creation-Date :2025-02-28 14:56 +0000\n "
15+ "POT-Creation-Date :2025-03-14 14:53 +0000\n "
1616"PO-Revision-Date :2024-05-11 00:33+0000\n "
1717"Last-Translator :Rafael Fontenelle <rffontenelle@gmail.com>, 2025\n "
1818"Language-Team :Chinese (China) (https://app.transifex.com/python-doc/teams/5390/zh_CN/)\n "
@@ -716,6 +716,9 @@ msgid ""
716716" for options like ``+f`` or ``/foo``, may specify them using the "
717717"``prefix_chars=`` argument to the :class:`ArgumentParser` constructor::"
718718msgstr ""
719+ "大多数命令行选项会使用 ``-`` 作为前缀,例如 ``-f/--foo``。 如果解析器需要支持不同的或者额外的前缀字符,例如像 ``+f`` 或 "
720+ "``/foo`` 之类的选项,可以在 :class:`ArgumentParser` 构造器中使用 ``prefix_chars=`` "
721+ "参数来指定它们::"
719722
720723#: ../../library/argparse.rst:377
721724msgid ""
@@ -809,6 +812,10 @@ msgid ""
809812"encoding and error handler`. Arguments file should be encoded in UTF-8 "
810813"instead of ANSI Codepage on Windows."
811814msgstr ""
815+ ":class:`ArgumentParser` 将读取参数的编码格式和错误处理方式从默认值 (即 "
816+ ":func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>` 和 "
817+ "``\" strict\" ``) 改为 :term:`filesystem encoding and error handler`。 在 Windows "
818+ "上参数文件应当以 UTF-8 而不是 ANSI 代码页来编码。"
812819
813820#: ../../library/argparse.rst:426
814821msgid "argument_default"
@@ -1726,7 +1733,7 @@ msgstr ""
17261733msgid ""
17271734"If the target namespace already has an attribute set, the action *default* "
17281735"will not overwrite it::"
1729- msgstr ""
1736+ msgstr "如果目标命名空间已经有一个属性集,则 *default* 动作不会覆盖它:: "
17301737
17311738#: ../../library/argparse.rst:920
17321739msgid ""
@@ -1793,6 +1800,8 @@ msgid ""
17931800" applies to positional arguments with nargs_ values other than ``?`` or "
17941801"``*``, or optional arguments marked as ``required=True``."
17951802msgstr ""
1803+ "对于 required_ 参数, ``default`` 值将被忽略。 例如,这将适用于带有 ``?`` 和 ``*`` 以外的 nargs_ "
1804+ "值的位置参数,或者被标记为 ``required=True`` 的可选参数。"
17961805
17971806#: ../../library/argparse.rst:950
17981807msgid ""
@@ -1864,6 +1873,16 @@ msgid ""
18641873"parser.add_argument('dest_file', type=argparse.FileType('w', encoding='latin-1'))\n"
18651874"parser.add_argument('datapath', type=pathlib.Path)"
18661875msgstr ""
1876+ "import argparse\n"
1877+ "import pathlib\n"
1878+ "\n"
1879+ "parser = argparse.ArgumentParser()\n"
1880+ "parser.add_argument('count', type=int)\n"
1881+ "parser.add_argument('distance', type=float)\n"
1882+ "parser.add_argument('street', type=ascii)\n"
1883+ "parser.add_argument('code_point', type=ord)\n"
1884+ "parser.add_argument('dest_file', type=argparse.FileType('w', encoding='latin-1'))\n"
1885+ "parser.add_argument('datapath', type=pathlib.Path)"
18671886
18681887#: ../../library/argparse.rst:996
18691888msgid "User defined functions can be used as well:"
@@ -1926,6 +1945,9 @@ msgid ""
19261945"the parser has run and then use the :keyword:`with`-statement to manage the "
19271946"files."
19281947msgstr ""
1948+ "甚至 :class:`~argparse.FileType` 在用于 ``type`` 关键字时也是有限制的。 如果一个参数使用了 "
1949+ ":class:`~argparse.FileType` 并且有一个后续参数出错,则将报告错误但文件并不会被自动关闭。 "
1950+ "在此情况下,更好的做法是等待直到解析器运行完毕再使用 :keyword:`with` 语句来管理文件。"
19291951
19301952#: ../../library/argparse.rst:1029
19311953msgid ""
@@ -1975,6 +1997,8 @@ msgid ""
19751997"conversions have been performed, so the type of the objects in the *choices*"
19761998" sequence should match the type_ specified."
19771999msgstr ""
2000+ "注意包括在 *choices* 序列中的内容会在执行任意 type_ 转换之后被检查,因此 *choices* 序列中对象的类型应当与指定的 type_"
2001+ " 相匹配。"
19782002
19792003#: ../../library/argparse.rst:1057
19802004msgid ""
@@ -2623,6 +2647,35 @@ msgid ""
26232647"usage: PROG [-h] [-1 ONE] [foo]\n"
26242648"PROG: error: argument -1: expected one argument"
26252649msgstr ""
2650+ ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
2651+ ">>> parser.add_argument('-x')\n"
2652+ ">>> parser.add_argument('foo', nargs='?')\n"
2653+ "\n"
2654+ ">>> # 没有负数选项,因此 -1 是位置参数\n"
2655+ ">>> parser.parse_args(['-x', '-1'])\n"
2656+ "Namespace(foo=None, x='-1')\n"
2657+ "\n"
2658+ ">>> # 没有负数选项,因此 -1 和 -5 是位置参数\n"
2659+ ">>> parser.parse_args(['-x', '-1', '-5'])\n"
2660+ "Namespace(foo='-5', x='-1')\n"
2661+ "\n"
2662+ ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
2663+ ">>> parser.add_argument('-1', dest='one')\n"
2664+ ">>> parser.add_argument('foo', nargs='?')\n"
2665+ "\n"
2666+ ">>> # 有负数选项,因此 -1 是选项\n"
2667+ ">>> parser.parse_args(['-1', 'X'])\n"
2668+ "Namespace(foo=None, one='X')\n"
2669+ "\n"
2670+ ">>> # 有负数选项,因此 -2 是选项\n"
2671+ ">>> parser.parse_args(['-2'])\n"
2672+ "usage: PROG [-h] [-1 ONE] [foo]\n"
2673+ "PROG: error: no such option: -2\n"
2674+ "\n"
2675+ ">>> # 有负数选项,因此两个 -1 都是选项\n"
2676+ ">>> parser.parse_args(['-1', '-1'])\n"
2677+ "usage: PROG [-h] [-1 ONE] [foo]\n"
2678+ "PROG: error: argument -1: expected one argument"
26262679
26272680#: ../../library/argparse.rst:1426
26282681msgid ""
@@ -2901,6 +2954,24 @@ msgid ""
29012954">>> parser.parse_args(['--foo', 'b', '--baz', 'Z'])\n"
29022955"Namespace(baz='Z', foo=True)"
29032956msgstr ""
2957+ ">>> # 创建一个最高层级解析器\n"
2958+ ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
2959+ ">>> parser.add_argument('--foo', action='store_true', help='foo help')\n"
2960+ ">>> subparsers = parser.add_subparsers(help='subcommand help')\n"
2961+ ">>>\n"
2962+ ">>> # 创建一个针对\" a\" 命令的解析器\n"
2963+ ">>> parser_a = subparsers.add_parser('a', help='a help')\n"
2964+ ">>> parser_a.add_argument('bar', type=int, help='bar help')\n"
2965+ ">>>\n"
2966+ ">>> # 创建一个针对\" b\" 命令的解析器\n"
2967+ ">>> parser_b = subparsers.add_parser('b', help='b help')\n"
2968+ ">>> parser_b.add_argument('--baz', choices=('X', 'Y', 'Z'), help='baz help')\n"
2969+ ">>>\n"
2970+ ">>> # 解析一些参数列表\n"
2971+ ">>> parser.parse_args(['a', '12'])\n"
2972+ "Namespace(bar=12, foo=False)\n"
2973+ ">>> parser.parse_args(['--foo', 'b', '--baz', 'Z'])\n"
2974+ "Namespace(baz='Z', foo=True)"
29042975
29052976#: ../../library/argparse.rst:1591
29062977msgid ""
@@ -3099,6 +3170,37 @@ msgid ""
30993170">>> args.func(args)\n"
31003171"((XYZYX))"
31013172msgstr ""
3173+ ">>> # 子命令函数\n"
3174+ ">>> def foo(args):\n"
3175+ "... print(args.x * args.y)\n"
3176+ "...\n"
3177+ ">>> def bar(args):\n"
3178+ "... print('((%s))' % args.z)\n"
3179+ "...\n"
3180+ ">>> # 创建最高层级解析器\n"
3181+ ">>> parser = argparse.ArgumentParser()\n"
3182+ ">>> subparsers = parser.add_subparsers(required=True)\n"
3183+ ">>>\n"
3184+ ">>> # 创建针对\" foo\" 命令的解析器\n"
3185+ ">>> parser_foo = subparsers.add_parser('foo')\n"
3186+ ">>> parser_foo.add_argument('-x', type=int, default=1)\n"
3187+ ">>> parser_foo.add_argument('y', type=float)\n"
3188+ ">>> parser_foo.set_defaults(func=foo)\n"
3189+ ">>>\n"
3190+ ">>> # 创建针对\" bar\" 命令的解析器\n"
3191+ ">>> parser_bar = subparsers.add_parser('bar')\n"
3192+ ">>> parser_bar.add_argument('z')\n"
3193+ ">>> parser_bar.set_defaults(func=bar)\n"
3194+ ">>>\n"
3195+ ">>> # 解析参数并调用被选定的任何函数\n"
3196+ ">>> args = parser.parse_args('foo 1 -x 2'.split())\n"
3197+ ">>> args.func(args)\n"
3198+ "2.0\n"
3199+ ">>>\n"
3200+ ">>> # 解析参数并调用被选定的任何函数\n"
3201+ ">>> args = parser.parse_args('bar XYZYX'.split())\n"
3202+ ">>> args.func(args)\n"
3203+ "((XYZYX))"
31023204
31033205#: ../../library/argparse.rst:1703
31043206msgid ""
@@ -3755,7 +3857,7 @@ msgstr ""
37553857#: ../../library/argparse.rst:2078
37563858msgid ""
37573859"The following example shows how to register a custom type with a parser::"
3758- msgstr ""
3860+ msgstr "下面的例子演示了如何注册一个带解析器的自定义类型:: "
37593861
37603862#: ../../library/argparse.rst:2080
37613863msgid ""