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

问题描述 投票:0回答:2

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

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

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'之间有一个空格。我无法改变路径,你知道我怎么能修复它?

python command-line subprocess args
2个回答
3
投票
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) + '"'

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.