【发布时间】:2017-11-15 14:56:31
【问题描述】:
我有一个文件“train.py”,它需要命令行参数来运行。有些参数是必需的,有些是可选的
例如。
.\train.py --counter arg1 --opt optional_arg
现在,我想编写一个名为“script.py”的新文件,它将导入这个“train.py”并在该脚本中传递参数并在“script.py”中执行“train.py”
我需要这样做,因为我想每次为 train.py 提供不同的参数集。
我知道我们可以使用 shell 脚本来做到这一点。我很好奇如何使用 python 脚本来做到这一点。
train.py
import optparse
optparser = optparse.OptionParser()
optparser.add_option(
"--counter", default = "",
help = "Counter value"
)
optparser.add_option(
"--opt", default = "",
help = "Optinal parameter"
)
'''Do Something'''
script.py
args = {
'--counter':''
'--opts':''
}
lst = [ 1, 2, 3]
for counter in lst:
'''set command line arguments here in args dictionary'''
args['--counter'] = counter
'''run train.py with args as input dictionary'''
【问题讨论】:
-
虽然你要求的是可能的,但我建议不要在不同的 python 代码之间传递数据作为命令行参数。而是将一个脚本的功能包装到一个函数或类中,然后导入另一个脚本。如果您希望能够继续将文件用作脚本,可以使用
if __name__ == "__main__"idiom -
我建议不要在不同的 python 代码之间传递数据作为命令行参数。这背后有什么原因吗?
-
将数据作为命令行参数传递要求您将该数据编码为字符串。虽然这对于您当前的设计或数据很简单可能没问题,但它很快就会变得乏味。最终,当您可以选择直接传递数据时,将数据转换为字符串然后再转换回原始类型似乎有点毫无意义(而且效率低下)。
-
啊,我明白了。这就说得通了。我实际上需要它作为字符串和整数。但无论如何,我会牢记这一点,以备不时之需。谢谢:)
-
嗨。我有一个复杂的 Flask 应用程序 master.py ,我无法在 Python3 中运行。我需要使用套接字运行 Python3 程序以将数据传递给另一个 SYSTEM 以执行操作。参数似乎是这样做的唯一方法??
标签: python python-3.x