调用subprocess传递浮点参数时为何报‘Invalid float value’错误?
问题解决
你的错误出在subprocess调用的参数列表里:你把'-l L'写成了一个单独的字符串,这会导致目标脚本把字符"L"(不是循环变量L的实际值)当成-l的参数,还带了空格,自然无法解析成有效的浮点数。
正确的做法是把选项'-l'和它对应的参数值拆成两个独立的列表元素,并且传入循环变量L的实际值,修正后的代码如下:
L1 = [9, 10, 11] import subprocess for L in L1: subprocess.call(['python', r'C:\Users\priyajit\Downloads\lattice_qm_mc.py', 'e', '-l', str(L), '-p'])
核心改动说明:
- 拆分
'-l L'为'-l'和str(L)两个独立项,subprocess会正确识别这是选项与对应参数的组合 - 用
str(L)把数值类型的L转成字符串,符合命令行参数的格式要求
这样循环时,脚本会依次传入9、10、11作为-l的参数,就能正常执行了。
内容的提问来源于stack exchange,提问作者Priyajit Jana
相关产品推荐
相关产品推荐

