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

时间:2018-03-02 19:54:07

标签: python command-line subprocess args

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

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

let result = getJsonLogin.getJson(urlGet: AppDelegate.ADDRESS+"/index.php", urlData: "mobile="+mobile+"")
print(result["message"])

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

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)

它在函数处返回一个函数错误我尝试转换浮动说: 无法将字符串转换为float:shell

UPDATE 我发现问题是我传递的第一个字符串是一个带有一些空格的路径。就像是: some_string = C:\ blabla \ my directory \ file.txt“ 在'my'和'directory'之间有一个空格。我无法改变路径,你知道我该怎么办呢?

2 个答案:

答案 0 :(得分: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)

修改

如所指出的那样,你也错过了一个"。这是应该的方式

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) + '"'

答案 1 :(得分: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