gpt4 book ai didi

python - 在 .INI 文件中将变量值更改为 float

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:16 25 4
gpt4 key购买 nike

我正在使用 .INI 文件将变量在 Python 和使用 BASIC 的软件之间来回传递,在分析数据后,我想更新某些变量的值。

这是我当前的代码:

import numpy as np

try:
from configparser import ConfigParser
except ImportError:
from ConfigParser import ConfigParser

config = ConfigParser()
config.read('ParameterFile.ini')

# read values from a section
GainAff = config.getfloat('Section 1', 'gainaff')
GainVff = config.getfloat('Section 1', 'gainvff')
FeedforwardAdvance = config.getfloat('Section 1', 'feedforwardadvance')
TrajectoryFIRFilter = config.getfloat('Section 1', 'trajectoryfirfilter')
RampRate = config.getfloat('Section 1', 'ramprate')

print 'GainAff = ', GainAff
print 'GainVff = ', GainVff
print 'Feedforward Advance = ', FeedforwardAdvance
print 'Trajectory FIR Filter = ', TrajectoryFIRFilter
print 'Ramp Rate = ', RampRate

new_GainAff = 1.0
new_GainVff = 2.0
new_FeedforwardAdvance = 0.3
new_TrajectoryFIRFilter = 0.5
new_RampRate = 4000

##update existing value
config.set('Section 1', 'GainAff', new_GainAff)
config.set('Section 1', 'GainVff', new_GainVff)
config.set('Section 1', 'FeedforwardAdvance', new_FeedforwardAdvance)
config.set('Section 1', 'TrajectoryFIRFilter', new_TrajectoryFIRFilter)
config.set('Section 1', 'RampRate', new_RampRate)

##save to a file
with open('ParameterUpdate.ini', 'w') as configfile:
config.write(configfile)
## Write some stuff in here
configfile.close()

但是,当我尝试使用 config.set 设置我的新变量时,我被告知我不能使用 float 值:

  File "/home/pi/.local/lib/python2.7/site-packages/backports/configparser/__init__.py", line 1221, in _validate_value_types
raise TypeError("option values must be strings")
TypeError: option values must be strings

一查,我看到很多人使用带有 float 的config.set,我不确定是不是因为python版本等原因。(我使用的是Python 2.7.13 )

我做错了什么?

最佳答案

set 函数需要一个字符串:https://docs.python.org/2/library/configparser.html使用如下代码转换为字符串:

config.set('Section 1', 'GainAff', str(new_GainAff))

从我在这里读到的内容来看,python 3 似乎也是这种情况:https://docs.python.org/3/library/configparser.html

可以确认python 3也是如此。以下是我的python 3解释器的输出:

>>> config = ConfigParser()
>>>
>>> config.read('b.ini')
['b.ini']
>>> config.set('Section 1', 'GainAff', 1.2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\PYTHON34\LIB\configparser.py", line 1165, in set
self._validate_value_types(option=option, value=value)
File "C:\PYTHON34\LIB\configparser.py", line 1154, in _validate_value_types
raise TypeError("option values must be strings")
TypeError: option values must be strings

关于python - 在 .INI 文件中将变量值更改为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50877065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com