0

Web サーバー用のカスタム設定ファイルを作成しています。設定ファイルは次のようになります。

[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)で機能しますが、構成ファイルから出力されるものとまったく同じです。localhostまた、構成ファイルでandを試し192.168.1.3ましたが、どちらも機能しません。どうすればこれを修正できますか? 他の回答では、改行に問題があるとのことですが、印刷adress + portしても改行は表示されません。

4

1 に答える 1

0

自分で直しました!

設定ファイルに整数を入れても、SafeConfigParser は設定ファイル全体を文字列として読み込むと思います。私がしたのは、行adress = "127.0.0.1"をに変更しただけで、adress = 127.0.0.1今は機能しています。なぜこうなったのかがよく分からないので、どなたかの解説をお願いしたいです。

于 2013-07-29T09:47:48.397 に答える