首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python: ConfigParser.NoSectionError: No section:'E-mail‘

Python: ConfigParser.NoSectionError: No section:'E-mail‘
EN

Stack Overflow用户
提问于 2016-01-07 02:57:54
回答 1查看 2.1K关注 0票数 1

我去叫KeyError: 'E-mail'。但是找不到问题。我尝试了readfp()以及使用文件的完整路径。my_file = (os.path.join(os.getcwd(),'config.ini'))。但似乎什么都不起作用。

下面是代码。

代码语言:javascript
运行
复制
import configparser
import sys
import xml.etree.ElementTree as ET
import time
import smtplib
import os

def usage(code):
  sys.stderr.write("usage:\n")
  sys.stderr.write(" " + sys.argv[0] + " <xml file with addresses> <subject> <file with message body>\n")
  sys.exit(code)


cfg = configparser.ConfigParser()
cfg.read('config.ini')

server = cfg.get('E-mail', 'server')
login = cfg.get('E-mail', 'login')
from_addr = cfg.get('E-mail', 'from')
password = cfg.get('E-mail', 'password')

if len(sys.argv) < 4:
  usage(1)

src_xml = sys.argv[1]
subject = sys.argv[2]
msg_file = sys.argv[3]

server = smtplib.SMTP(server)
server.ehlo()
server.starttls()
server.login(login, password)

with open(msg_file) as f:
  msg_text = f.read()

tree = ET.parse(src_xml)
root = tree.getroot()

for p in root:
  if 'email' in p.attrib:
    to_addr = p.attrib['email']
    msg = "\r\n".join([
      "From: " + from_addr,
      "To: " + to_addr,
      "Subject: " + subject,
      "",
      msg_text
    ])
    server.sendmail(from_addr, to_addr, msg)

server.quit()

这是我得到的错误。

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "C:\Users\Isuru\AppData\Local\Programs\Python\Python35-32\lib\configparser.py", line 1135, in _unify_values
    sectiondict = self._sections[section]
KeyError: 'E-mail'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Isuru\Desktop\script\MailSender.py", line 17, in <module>
    server = cfg.get('E-mail', 'server')
  File "C:\Users\Isuru\AppData\Local\Programs\Python\Python35-32\lib\configparser.py", line 778, in get
    d = self._unify_values(section, vars)
  File "C:\Users\Isuru\AppData\Local\Programs\Python\Python35-32\lib\configparser.py", line 1138, in _unify_values
    raise NoSectionError(section)
configparser.NoSectionError: No section: 'E-mail'

这是config.ini文件。

代码语言:javascript
运行
复制
[E-mail]
server=********:465
login=***********.com
from=random@gmail.com
password=******

我已经在StackOverflow中尝试了很多相同的问题。但没那么走运。

EN

回答 1

Stack Overflow用户

发布于 2016-01-07 03:58:50

我不能重现你的错误。我甚至可以说,您的配置文件解析代码没有任何问题。

可能您的配置文件中有一个拼写错误。你确定你读了你认为你读过的文件吗?

我已经设置了以下配置文件conf.ini

代码语言:javascript
运行
复制
[E-mail]
foo=hello
bar=world

和下面的Python3脚本test.py

代码语言:javascript
运行
复制
from configparser import ConfigParser
parser = ConfigParser()
parser.read("conf.ini")
print(parser.get("E-mail", "foo"))
print(parser.get("E-mail", "bar"))

当我运行这个脚本时,我得到了以下输出:

代码语言:javascript
运行
复制
$ python3 test.py
hello
world

百事大吉。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34640657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档