http.server if 语句 os.path.isfile() 不起作用



这是我的代码:

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()

因此,从函数中的类getHandlerdo_GET(self)它永远不会通过if not os.path.isfile("PbToken.txt") and os.path.isfile("SlToken.txt"):语句(我当然确保文件实际上不存在(。我希望它检查这两个文件是否存在,如果它们不执行下面写的内容。如果文件存在,它们应该直接转到使用raise SystemExitelse语句。我做错了什么?

它应该or而不是and...

因此,只需if not os.path.isfile("PbToken.txt") or not os.path.isfile("SlToken.txt"):查看其中一个文件是否丢失。

最新更新