Python33 - SafeConfigParser放置不可见的换行符,或者不是有效的http.server输入

时间:2013-07-29 09:41:24

标签: python webserver newline configparser

我正在为网络服务器制作自定义设置文件,设置文件如下所示:

[server]
adress = "127.0.0.1"
port = 8080

解析此代码的代码:

def main():
    parser = SafeConfigParser()
    parser.read("settings.cfg")
    global adress, port
    adress = parser.get("server", "adress")
    port = int(float(parser.get("server", "port").rstrip()))
    print(adress + str(port))

在末尾打印代码会给出字符串:"127.0.0.1"8080。 虽然我的http.server服务器不接受这些作为输入: httpd = server_class((adress, port), Handler)出现以下错误:

    httpd = self.server_class((adress, port), Handler)
  File "C:\Python33\lib\socketserver.py", line 430, in __init__
    self.server_bind()
  File "C:\Python33\lib\http\server.py", line 135, in server_bind
    socketserver.TCPServer.server_bind(self)
  File "C:\Python33\lib\socketserver.py", line 441, in server_bind
    self.socket.bind(self.server_address)
socket.gaierror: [Errno 11004] getaddrinfo failed

当我输入("127.0.0.1", 8080)作为输入时,它确实有效,但它与配置文件中的内容完全相同。我还在配置文件中尝试了localhost192.168.1.3,但这也不起作用。 我该如何解决这个问题?其他答案表示换行有问题,但打印adress + port不会在其中任何一个上显示换行符

1 个答案:

答案 0 :(得分:0)

自己修好了!

我认为SafeConfigParser将整个设置文件作为字符串读取,即使您将整数放在配置文件中也是如此。我所做的只是将行adress = "127.0.0.1"更改为adress = 127.0.0.1,现在就可以了。我仍然希望得到某人的解释,因为我不完全理解为什么会这样。