Я не могу преобразовать строку, переданную через командную строку, в функцию с плавающей точкой.
Я лучше объясню. У меня есть эта функция, которая принимает два аргумента, второй - число с плавающей запятой
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 ". Я не могу изменить путь, знаете, как это исправить?
process = subprocess.Popen(cmd1, shell=True)
? - person tenfishsticks   schedule 02.03.2018cmd
,+ first_arg + str(second_arg)
, вероятно, должен быть пробел между аргументами, верно? Я полагаю, вы хотитеsome_string 0.02
вместоsome_string0.02
. - person 0x5453   schedule 02.03.2018