擅长:python、mysql、java
<p>当我编写命令行脚本时,我常常会专门设计我的脚本,这样才有可能。关键是将参数与主函数分开分析。</p>
<p>例如,主函数可能如下所示:</p>
<pre><code>def main(**kwargs):
# the body of the script goes here
</code></pre>
<p>然后在模块的其他地方,我将配置arg解析器,解析args并将结果传递到主脚本中:</p>
<pre><code>def run():
parser = ... # configure parser here
configs = parse_args(parser)
main(**configs)
</code></pre>
<p>这样,如果有人想从Python中调用脚本,他们可以这样做(这也使测试更加容易):</p>
<pre><code>import somescript
somescript.main(option='value', option2='value2')
</code></pre>
<p>不幸的是,你正在使用的脚本的作者似乎没有这样做。如另一个答案所述,您可以覆盖<code>sys.argv</code>,然后导入脚本。虽然这可能会让人觉得有点老套,但它应该比打开一个新进程并分别调用命令所占用的资源少。</p>