Python Webserver文件输出

时间:2015-05-17 20:45:27

标签: python webserver

我有一个启动并运行的Python Web服务器,它会将文件正确输出到我的目录,但我无法弄清楚如何附加到已经存在的文件或者为文件追加时间戳。

问题是,如果文件已存在,它将覆盖它而不是创建新文件。所以我想要:

  1. 将日期和时间戳附加到文件名OR
  2. 只需将新数据附加到现有文件即可。
  3. 让它自动检测服务器IP地址也很方便。

    import BaseHTTPServer, os, cgi
    import cgitb; cgitb.enable()
    import time
    import datetime
    
    timeStamp = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
    print timeStamp
    
    class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
    
    def do_GET(self):
        self.send_response(200)
        self.send_header("content-type", "text/html;charset=utf-8")
        self.end_headers()
        self.wfile.write("Upload Complete")
    
    def do_POST(self):
    
        print self.headers
        form = cgi.FieldStorage(fp = self.rfile)
        ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
        length = cgi.parse_header(self.headers.getheader('Content-Length'))
        print length[0]
        if ctype == 'application/x-www-form-urlencoded':
            qs = self.rfile.read(int(length[0]))
            fout = file(os.path.join('/Inet', 'video.mov'), 'wb')
            fout.write (qs)
            fout.close()
        self.do_GET()
    
    if __name__ == '__main__':
        server = BaseHTTPServer.HTTPServer(("192.168.1.10", 8000), Handler)
        print('web server on 8000..')
        server.serve_forever()
    

2 个答案:

答案 0 :(得分:0)

您正在使用'wb'编写现有文件。相反,您可以先附加'a'打开文件,然后写入文件。

f_path = open(os.path.join('/Inet', 'video.mov'), 'a+')
f_path.write(qs)

答案 1 :(得分:0)

我可以用这个

附加日期和时间
timeStamp = datetime.datetime.now().strftime("%A, %d. %B %Y %I-%M%p")
qs = self.rfile.read(int(length[0]))
fout = file(os.path.join('/Inet', 'video_'+timeStamp+'_.mov'), 'wb')
fout.write (qs)