Python - ConfigParser - AttributeError:ConfigParser 实例没有属性“__getitem__”

2024-06-02

我正在创建每日报价服务器。我正在从 INI 文件中读取选项,其文本如下:

[Server]
host =
port = 17

[Quotes]
file=quotes.txt

但是,当我使用 ConfigParser 时,它给了我这个错误:

Traceback (most recent call last):
  File "server.py", line 59, in <module>
    Start()
  File "server.py", line 55, in Start
    configOptions = parseConfig(filename)
  File "server.py", line 33, in parseConfig
    server = config['Server']
AttributeError: ConfigParser instance has no attribute '__getitem__'

这是我的代码:

#!/usr/bin/python

from socket import *
from  ConfigParser import *
import sys

class serverConf:
    port = 17
    host = ""
    quotefile = ""

def initConfig(filename):


    config = ConfigParser()

    config['Server'] = {'port': '17', 'host': ''}
    config['Quotes'] = {'file': 'quotes.txt'}

    with open(filename, 'w') as configfile:
        config.write(configfile)


def parseConfig(filename):

    configOptions = serverConf()



    config = ConfigParser()
    config.read(filename)

    server = config['Server']

    configOptions.port = int(server['port'])
    configOptions.host = conifg['Server']['host']
    configOptions.quoteFile = config['Quotes']['file']



    print "[Info] Read configuration options"

    return configOptions

def doInitMessage():

    print "Quote Of The Day Server"
    print "-----------------------"
    print "Version 1.0 By Ian Duncan"
    print ""

def Start():

    filename = "qotdconf.ini"
    configOptions = parseConfig(filename)

    print "[Info] Will start server at: " + configOptions.host + ":" + configOptions.port

Start()

为什么我会收到此错误,我可以采取什么措施来修复它?


快速阅读后,您似乎正在尝试像字典一样读取数据,此时您应该使用:config.get(section, data)

EG:

...
config = ConfigParser()
config.read(filename)
...
configOptions.port = config.getint('Server', 'port')
configOptions.host = config.get('Server', 'host')
configOptions.quoteFile = config.get('Quotes', 'file')

要写入配置文件,您可以执行以下操作:

...
def setValue(parser, sect, index, value):
    cfgfile = open(filename, 'w')
    parser.set(sect, index, value)
    parser.write(cfgfile)
    cfgfile.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python - ConfigParser - AttributeError:ConfigParser 实例没有属性“__getitem__” 的相关文章

随机推荐

  • 设置列表中前 10 项的样式

    可以使用像 li nth child 这样的东西来设置列表中前十项的样式吗 ol li item 1 li li item 2 li li item 3 li li item 4 li li item 5 li li item 6 li l
  • C# 'out' 或 'ref' 参数的值何时实际返回给调用者?

    当我向某个人分配任务时out or ref参数 是立即分配给调用者提供的引用的值 或者是out and ref当方法返回时分配给引用的参数值 如果方法抛出异常 是否返回值 例如 int callerOutValue 1 int caller
  • 生成单调递增整数(最大 64 位)

    作为新项目的一部分 我们需要一个可以生成单调递增整数的服务 该服务的要求是 服务不需要生成连续的整数 只要它生成单调递增的整数就应该没问题 它应该产生 64 位整数 该服务应该具有高可用性 服务应该能够适应故障 或重新启动 我本来打算使用r
  • Rails 引擎 - 简单的可能引擎(1)添加模型并(2)在包含类中添加关联

    我正在尝试编写我的第一个引擎 但在以下场景中遇到问题 在主机应用程序中 我将拥有具有名称的用户模型 这是保证的 因此在引擎中我可以引用用户类而不是某种程度的间接 在引擎中 我将有一个帖子模型 并且需要在帖子模型和包含应用程序中的用户模型之间
  • Mac Snow Leopard 上的 Curb gem 出现问题

    这消耗了我几个小时的时间 在控制台中我运行 require curb 我收到错误 LoadError dlopen usr local lib ruby gems 1 8 gems taf2 curb 0 5 4 0 lib curb co
  • 根据上下文翻译句子的部分内容

    我正在开发一个需要能够翻译部分句子的应用程序 问题是 如果我将这些部分发送到像 Google Translate 这样的翻译 API 翻译通常在它们出现的上下文中没有意义 示例 He leaves建筑物 如果我翻译一下leaves对于任何目
  • YouTube 视频内容涵盖 IE < 9 中的 CSS 下拉菜单

    我使用 CSS 创建了下拉菜单 并将 YouTube 视频放置在导航栏下方的框中 使用 IE 8 时 下拉菜单落后于 YouTube 视频 尽管带有导航栏的 div 的 z index 比带有 YouTube 视频的 div 更高 该问题在
  • 从向量获取特征对象引用

    我正在努力从 a 中获取元素Vec这是一生的参考 我将我的代码简化为 pub trait Runnable pub struct RunList lt a gt runnables Vec lt a mut Runnable gt impl
  • 如何跨多个文本文件查找字典中键的频率?

    我应该计算文档 individual articles 中所有文件中字典 d 的所有键值的频率 这里 文档 individual articles 大约有20000个txt文件 文件名为1 2 3 4 例如 假设 d Britain 5 7
  • 属性和依赖属性有什么区别

    依赖属性的创建方式与属性相同 依赖属性是否仅在创建自定义控件时使用 依赖属性和标准属性有很大不同 依赖属性提供的关键功能是支持binding and 动画片 如果您想使用Binding或模板绑定该属性需要是依赖属性 当对属性进行动画处理时
  • Spark Python:标准缩放器错误“不支持... SparseVector”

    我又撞到了堵墙 我是一个新手 所以我不得不再次依赖你强大的知识 我从一个数据集开始 如下所示 user account id user lifetime user no outgoing activity in days user acco
  • NVD3 - 配置轴上的刻度

    我有一个 nvd3 折线图 它显示时间序列 但无法在 x 轴右侧获取刻度 对于较长的时间跨度 它会按预期工作 但对于较短的时间跨度 此处 12 31 05 至 01 01 06 多个刻度显示相同的日期 请看一下JSFiddle 上此图表的代
  • 具有作用域原型的 bean 和单例 bean 中的 new Object 有什么区别?

    就像主题中一样 我没有看到这些方法之间有任何区别 当我只使用那些时 原型 bean 就很清楚了 但在 Spring 中 我们基于单例的 bean 因此当我在单例 bean 中使用带有作用域原型的 bean 时 它看起来就像我想创建新的对象一
  • wtforms 自定义验证器可以使字段可选吗?

    如果选中复选框 我正在使用自定义验证器来检查字段不为空 它检查正确 但无论如何它总是仍然验证该值是否是数字 基本上我需要一个字段来在表单的某些条件下停止验证 有没有办法让自定义验证器停止现场验证 是的 自定义验证器可以像内置的可选和必需验证
  • OSX 通过 macports 安装 subversion 时出错

    我正在尝试安装 subversion 1 7 2 从默认的 Lion 版本 1 6 升级 跑步sudo port install subversion安装成功完成 但是在运行 svn version 时收到此错误 svn version d
  • 使用 C# 以编程方式登录网站

    因此 我一直在网上搜索 试图了解有关如何使用 C 以编程方式登录网站的更多信息 我不想使用网络客户端 我想我想使用 HttpWebRequest 和 HttpWebResponse 之类的东西 但我不知道这些类是如何工作的 我想我正在寻找某
  • C# 用户控件作为自定义面板

    我创建自己的用户控件 其中仅包含一个面板 当我在设计器中拖动 myPanel 对象 然后尝试在其上添加按钮时 该按钮实际上已添加到表单的控件中 是否有我必须设置的属性 属性才能执行此操作 这是执行我想要的操作的另一种方式 public cl
  • django-pipeline 和 s3boto 存储似乎不能一起工作

    我尝试将 django pipeline 1 1 27 与 s3boto 一起使用来压缩和过滤静态文件 然后将它们上传到 s3 存储桶 如果我只是使用 PIPELINE STORAGE pipeline storage PipelineFi
  • 对于大文件,在标记 inputStream 并重置它时出现异常“重置为无效标记”。?

    我正在使用 InputStream 对象来计算某个文件的 Md5 我标记流 后来我重置了流 然而 对于大文件 会出现以下异常 inStreamLatestFile mark 0 checkSumCalculated MD5CheckSumC
  • Python - ConfigParser - AttributeError:ConfigParser 实例没有属性“__getitem__”

    我正在创建每日报价服务器 我正在从 INI 文件中读取选项 其文本如下 Server host port 17 Quotes file quotes txt 但是 当我使用 ConfigParser 时 它给了我这个错误 Traceback