python读取配置文件失败原因_使用Python3,4中的ConfigParser读取配置文件时出错

本文介绍了在Python3.4中使用ConfigParser读取类似配置文件时遇到的问题,包括错误信息及尝试的解决方案。通过自定义FakeSecHead类来处理配置文件的节头,但最终在代码的其他部分遇到了键错误。作者寻求帮助以正确读取大量相同格式的配置集文件。
摘要由CSDN通过智能技术生成

我在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'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值