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
我在Windows上工作。
希望有人可以提供帮助,似乎服务器目录始终位于' C:'。的基础。 感谢
答案 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
缩放字段。