假设我有一个python文件main.py,它有一些可选的参数--学习速率,批处理大小等等。
如果我想运行这个文件,我可以将以下内容输入终端(例如Ubuntu)。
python3 main.py --learning-rate 0.1 --batch-size 100
现在,我想用main.py编写一些代码,这样在输入上面的命令之后,我就可以通过执行这些代码在字符串中得到这个命令。下面是我想要得到的字符串:
Python3 main.py -学习率0.1 -批处理-100号
我之所以要这样做,是因为我想把这个字符串写入我的记录文件中,这样我就可以更好地知道我运行了什么命令。
有人能告诉我在运行python文件时应该导入哪个包以及应该编写哪些代码来获取命令信息吗?
谢谢!
发布于 2018-08-24 18:07:37
您不能总是精确地得到您输入的内容,因为shell将在启动脚本之前先完成替换和展开文件名。例如,如果键入python "foo.py" *.txt,脚本将不会看到*.txt,它将看到文件列表,也不会看到foo.py周围的引号。
有了这个警告,sys模块就有一个名为argv的变量,该变量包含所有参数。argv[0]是脚本的名称。
要获取python可执行文件的名称,可以使用sys.executable。
为了把这些联系在一起,你可以做这样的事情:
print(sys.executable + " " + " ".join(sys.argv))发布于 2018-08-24 18:02:39
为什么不使用您分析过的参数重做命令呢?它不完全是您键入的,但这可能是很好的,因为它将是一种通用格式。
Ex (假设学习速率和批处理大小存储在类似名称的变量中):
command = "python3 main.py --learning-rate {} --batch-size {}".format(learning_rate, batch_size) 当然,如果某些命令是可选的,则会稍微复杂一些,但我假设在这种情况下,这些参数会有一个默认值,因为您的网络每次都需要这些参数。
https://stackoverflow.com/questions/52009570
复制相似问题