用于打开文件的python BaseHTTPRequestHandler和本地http服务器目录

时间:2018-06-16 21:49:38

标签: python directory httpserver basehttprequesthandler

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.joinos.getcwd一起使用,它将始终返回此类目录:c:\\path.ext而不是c:\\user\\name\\blabla\\path.ext 我在Windows上工作。

希望有人可以提供帮助,似乎服务器目录始终位于' C:'。的基础。 感谢

1 个答案:

答案 0 :(得分:0)

实际上,cwd目录根本没有改变:在我的函数do_GET中打印os.getcwd(),或者在public String VersionOfApplicationThatHasWrittenThisFile { get { return "1.0"; } set { // Leave empty } } 得到相同结果之后打印。

真正的问题是关于__name__ == '__main__'的使用,或仅仅是在使用os.path.join之类的内容时。 open(self.path)给出一个格式为self.path的字符串,我需要删除斜杠...

/path.ext将返回一个格式为os.path.join(os.getcwd(), '/a_second_path')的字符串,其中包含cwd的c:/a_second_path缩放字段。