python BaseHTTPRequestHandler и локальный каталог http-сервера для открытия файла
from http.server import BaseHTTPRequestHandler, HTTPServer
class S(BaseHTTPRequestHandler):
def do_GET(self):
#path = os.path.join(os.getcwd(), self.path) --> Not work !
with open(self.path, 'r', encoding='utf8') as File:
content = File.read()
def run(server_class=HTTPServer, handler_class=S, port=8085):
server_address = ('', port)
httpd = server_class(server_address, handler_class)
print ('Starting httpd...')
httpd.serve_forever()
if __name__ == "__main__":
run()
Здравствуйте, я пытаюсь манипулировать файлом, используя BaseHTTPRequestHandler и локальный HTTP-сервер. Я не могу получить абсолютный путь, действительно странные вещи. я использую os.path.join
с os.getcwd
и он всегда будет возвращать такой каталог: c:\\path.ext
вместо c:\\user\\name\\blabla\\path.ext
Я работаю над окнами.
Надеюсь, что кто-то может помочь, похоже, что каталог сервера всегда находится в базовом корне "C:".
Спасибо
1 ответ
На самом деле, каталог cwd вообще не изменился: печать os.getcwd() в моей функции do_GET или сразу после __name__ == '__main__'
дать тот же результат.
Настоящая проблема заключалась в использовании os.path.join
или просто при использовании чего-то вроде open(self.path)
, self.path
дать строку с этим форматом /path.ext
и мне нужно было убрать косую черту...
os.path.join(os.getcwd(), '/a_second_path')
вернет строку с форматом как c:/a_second_path
с усечением например users/name/desktop
из cwd.