2015-05-17 144 views
0

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

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

  1. 追加日期和时间戳的文件名或
  2. 新的数据只是附加到现有的文件。

此外,它可能会很方便让它自动检测服务器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() 
+0

使用'开放的(...)'文件和使用''a''追加。 – Daniel

+0

我试过,但我无法得到正确的语法由于某种原因。 – turtle02

回答

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) 
0

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

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

我做了更改并且文件也可以被追加,但是视频无法播放,并且第二个上传请求也得到了400错误的错误语法。 – turtle02