http.server если оператор os.path.isfile () не работает - PullRequest
0 голосов
/ 07 июня 2018

Итак, это мой код:

from http.server import BaseHTTPRequestHandler, HTTPServer
import requests, json, os

PORT = 1337

class getHandler(BaseHTTPRequestHandler):
    def handleJSON(self, provider, data):
        if provider == "provider_1":
            json_data = json.loads(data)
            sl_token = json_data["access_token"]
            return sl_token
        elif provider == "provider_2":
            json_data = json.loads(data)
            pb_token = json_data["access_token"]
            return pb_token

    def do_GET(self):
        data = self.requestline

        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
        self.wfile.write(b'You may close the tab now')

        print("Raw Data: " + data)

        if not os.path.isfile("PbToken.txt") and os.path.isfile("SlToken.txt"):
            if "GET /?code=" and "&state=" in data: # Provider_1
                print("Provider_1 Data:", data)
                pb_code = data[data.find("/?code=") + len("/?code="):data.find("&state=")]

                with open("PbToken.txt", "w") as file:
                    file.write(pb_code)
                    file.close()

            elif "GET /?code=" in data: # Provider_2
                print("Provider_2 Data:", data)
                sl_code = data.strip()
                sl_code = sl_code[sl_code.rindex("/?code=") + len("/?code="):sl_code.rindex(" ")]

                with open("SlToken.txt", "w") as file:
                    file.write(sl_code)
                    file.close()

        else:
            raise SystemExit

server = HTTPServer(('localhost', PORT), getHandler)
print("Started server on port", PORT)

server.serve_forever()

Итак, из класса getHandler в функции do_GET(self) он никогда не преодолеет оператор if not os.path.isfile("PbToken.txt") and os.path.isfile("SlToken.txt"): (я, конечно, убедился, чтофайлов на самом деле нет).Я хочу проверить, существуют ли оба файла, если они не выполняют то, что написано ниже.Если файлы существуют, они должны перейти прямо к оператору else, где он использует raise SystemExit.Что я делаю не так?

1 Ответ

0 голосов
/ 07 июня 2018

Это должно было быть or, а не and ...

Так просто if not os.path.isfile("PbToken.txt") or not os.path.isfile("SlToken.txt"):, чтобы увидеть, отсутствует ли один из файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...