尝试将浮点变量作为参数传递给子进程时,为什么会收到错误“无效浮点值”?

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

我有一个带有多个参数的 Python 脚本。我想用不同的参数值运行这个脚本。我编写了以下代码进行试运行,但出现错误:

L1=[9,10,11]

import subprocess


for L in L1:
    subprocess.call(['python', r'C:\Users\priyajit\Downloads\lattice_qm_mc.py', 'e', '-l L', '-p'])

错误是:

usage: lattice_qm_mc.py [-h] [-a A] [-cfg CFG] [-cor COR] [-d D] [-e E] [-i]
                        [-l L] [-mu MU] [-o] [-p] [-r R] [-t T] [-v {s,c,w}]
                        {e,m,w}
lattice_qm_mc.py: error: argument -l: invalid float value: ' L'

l
的默认值为10,采用浮点值。

python subprocess
2个回答
0
投票

您正在传递字符串“L”并且想要传递变量 L。尝试:

import subprocess

L1=[9,10,11]

for L in L1:
    subprocess.call(['python', r'C:\Users\priyajit\Downloads\lattice_qm_mc.py', 'e', '-l', L, '-p'])

0
投票

你试图错误地通过L。现在您正在传递字符串“L”而不是列表 L1 的值。

试试这个:

subprocess.call(['python', r'C:\Users\priyajit\Downloads\lattice_qm_mc.py', 'e', '-l', str(L), '-p'])

我们分离了 -l 参数并使用 str(L) 将列表中的实际值 L 从整数转换为字符串,因为 subprocess.call 需要字符串作为参数。

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