擅长:python、mysql、java
<p>如果您的目标是读取一个或多个可读文件,可以尝试:</p>
<pre><code>parser.add_argument('file', type=argparse.FileType('r'), nargs='+')
</code></pre>
<p><code>nargs='+'</code>将所有命令行参数收集到列表中。还必须有一个或多个参数,否则将生成错误消息。</p>
<p><code>type=argparse.FileType('r')</code>尝试将每个参数作为文件打开以供读取。如果argparse无法打开文件,它将生成错误消息。您可以使用它来检查参数是否是有效且可读的文件。</p>
<p>或者,如果您的目标是读取0个或多个可读文件,则可以简单地将<code>nargs='+'</code>替换为<code>nargs='*'</code>。如果未提供命令行参数,则此操作将为您提供空列表。如果没有给您任何文件,您可能希望打开stdin—如果是这样,只需将<code>default=[sys.stdin]</code>作为参数添加到<code>add_argument</code>。</p>
<p>然后要处理列表中的文件:</p>
<pre><code>args = parser.parse_args()
for f in args.file:
for line in f:
# process file...
</code></pre>
<hr/>
<p>关于nargs的更多信息:
<a href="https://docs.python.org/2/library/argparse.html#nargs" rel="noreferrer">https://docs.python.org/2/library/argparse.html#nargs</a></p>
<p>有关类型的详细信息:<a href="https://docs.python.org/2/library/argparse.html#type" rel="noreferrer">https://docs.python.org/2/library/argparse.html#type</a></p>