2015-05-17 184 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