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.

Другие вопросы по тегам