从字符串到浮点数与python中的argv

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从字符串到浮点数与python中的argv相关的知识,希望对你有一定的参考价值。

我无法将通过命令行传递的字符串转换为浮动函数。

我会更好地解释。我有这个函数谁接受两个参数,第二个是浮点数

def function():
   first_param = sys.argv[1]
   second_param = float(sys.argv[2])

然后我有另一个函数调用软件容器中的第一个函数

def callFunction(first_arg, second_arg):
   cmd = 'docker run --rm -v pathFunction:/home/fenics/shared -w /home/fenics/shared quay.io/fenicsproject/stable "python2 function.py ' + first_arg + str(second_arg)
   process = subprocess.Popen(cmd, shell=True)

我打电话的时候:

callFunction("some_string",0.02)

它在我尝试转换为float的行中返回函数错误:无法将字符串转换为float:shell

更新我发现问题是我传递的第一个字符串是一个带有一些空格的路径。类似于:some_string = C: blabla my directory file.txt“在'my'和'directory'之间有一个空格。我无法改变路径,你知道我怎么能修复它?

答案
cmd = 'docker run --rm -v pathFunction:/home/fenics/shared -w /home/fenics/shared quay.io/fenicsproject/stable "python2 function.py ' + first_arg + str(second_arg)

你错过了第一和第二个arg之间的空格。它应该是:

cmd = 'docker run --rm -v pathFunction:/home/fenics/shared -w /home/fenics/shared quay.io/fenicsproject/stable "python2 function.py ' + first_arg + ' ' + str(second_arg)

edit

正如所指出的,你也错过了一个“。这就是应该的样子

cmd = 'docker run --rm -v pathFunction:/home/fenics/shared -w /home/fenics/shared quay.io/fenicsproject/stable "python2 function.py ' + first_arg + ' ' + str(second_arg) + '"'
另一答案

sys.argv[1]改为sys.argv[0]sys.argv[1]改为sys.argv[2]

def function():
   first_param = sys.argv[0]
   second_param = float(sys.argv[1])

参数索引从0开始,而不是从1开始。

检查tutorial.tutorial

以上是关于从字符串到浮点数与python中的argv的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中将 numberDecimal 值投影到浮点数中

字符串 到浮点数 整数 又到浮点数

支持小数点和小数点逗号的字符串到浮点数转换

将逗号添加到浮点数或字符串?

有理数到浮点数

将值列表映射到浮点数时出现mypy错误