我在python3.4中使用configparser读取配置集文件时遇到了一个唠叨错误。代码最初是为Python2.7编写的,但我不再使用它,我只使用Python3.4。我根本不想向后兼容Python2.7。只有而且只有Python3.4Error reading set file ./sets/diagnostic1.set
上面是我运行此代码时遇到的错误
^{pr2}$
包含配置的“diagnostic1.set”文件COMMENTS=Click view comments.
SECTION_1=################# General Settings #################
FRAMEWORK_CONFIG=./experts/config/TesingConfig.xml
USE_ORDER_WRAPPER=0
UI_FONT_SIZE=12
UI_ERROR_INFO_COLOR=0
UI_CUSTOM_INFO_COLOR=0
SECTION_2=############## Common Strategy Settings ##############
OPERATIONAL_MODE=1
STRATEGY_INSTANCE_ID=25
MAX_DRAWDOWN_PERCENT=100.00000000
MAX_SPREAD_PIPS=100.00000000
ENABLE_WFO=0
WFO_WINDOW_SIZE=0
PARAMETER_SET_POOL=0.00000000
DISABLE_COMPOUNDING=0
USE_INSTANCE_BALANCE=0
INIT_INSTANCE_BALANCE=0.00000000
TIMED_EXIT_BARS=31
ATR_AVERAGING_PERIOD=3
MAX_OPEN_ORDERS=1
SECTION_3=############## Additional Strategy Settings ##############
OPEN_ATR_MULTIPLIER=0.41000000
OPEN_ATR_MULTIPLIER,F=1
OPEN_ATR_MULTIPLIER,1=0.20
OPEN_ATR_MULTIPLIER,2=0.01
OPEN_ATR_MULTIPLIER,3=0.60
TRADE_CONFIDENCE=2
因此,当我在Python3.4控制台中测试运行代码时,我得到“False”,这表示它无法读取配置集文件。在Python 3.4.3 |Anaconda 2.3.0 (64-bit)| (default, Jun 4 2015, 15:29:08)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from configparser import *
>>> import re, os, ctypes, csv, calendar, datetime
>>> from time import *
>>> from ctypes import *
>>>
>>> def readSetFile(file):
... try:
... #config = RawConfigParser()
... #config.readfp(FakeSecHead(open(file))) # readfp will be deprecated from configparser edited by developer
... config = ConfigParser(delimiters=('=', ':'), comment_prefixes=('#', ';'), inline_comment_prefixes=';', interpolation=None)
... config.read_file(FakeSecHead(open(file)))
... return config
... except:
... return False
>>>
>>> class FakeSecHead(object):
... def __init__(self, fp):
... self.fp = fp
... self.sechead = '[main]\n'
... def readline(self):
... if self.sechead:
... try:
... return self.sechead
... finally:
... self.sechead = None
... else:
... line = self.fp.readline()
... return re.sub('^SECTION_3.*$', '[additional]', line)
...
>>> readSetFile('./sets/diagnostics1.set')
False
>>>
任何有助于以这种方式读取配置集文件。我有数百个相同格式的配置集文件。但我似乎无法读取python3.4中的文件
我已经设法修改了Patrick MAUPIN的代码片段,它能够读取配置集文件,但现在在代码的同一部分抛出了一个键错误numSystemsInPortfolio = len(setFilePaths)
SettingsArrayType = numSystemsInPortfolio * ctypes.POINTER(c_double)
settings = SettingsArrayType()
for i in range(numSystemsInPortfolio):
settings[i] = SettingsType()
settings[i][IS_BACKTESTING] = True
settings[i][DISABLE_COMPOUNDING] = float(sets[i].mainParams["DISABLE_COMPOUNDING"]['value']) if sets[
i].content.has_option('main', 'DISABLE_COMPOUNDING') else 0
settings[i][TIMED_EXIT_BARS] = float(sets[i].mainParams["TIMED_EXIT_BARS"]['value']) if sets[
i].content.has_option('main', 'TIMED_EXIT_BARS') else 0
settings[i][ORIGINAL_EQUITY] = config.getfloat("account", "balance")
.....
.....
.....
.....
.....
File "mycode.py", line 222, in main
i].content.has_option('main', "DISABLE_COMPOUNDING") else 0
KeyError: 'DISABLE_COMPOUNDING'