我正在嘗試從頭開始創建一個 HTTP 服務器,并希望將日志寫入文本檔案中,因此我創建了此函式。
def do_LOG(self, addr, request):
path = 'log/logging.txt'
host = addr[0]
port = addr[1]
method = request[:4]
headers = request.split('\n')
filename = headers[0].split()[1]
f = open(path, "a ")
f.writelines('Server used: ' host '\n' 'Port used: ' port '\n' 'Method Served: ' method '\n' 'Filename: ' filename '\n\n')
f.close()
return
該函式只創建一個檔案,但不能寫入檔案。我正在從父類覆寫這個函式。這是父類中的定義。
def do_LOG(self, addr, request):
return
uj5u.com熱心網友回復:
請提供更多代碼
為了更好地處理,通過在開頭添加“./”來添加目錄的相對路徑。
我仍然提供臨時修復-
class Logs: def do_LOG(self, addr, request): path = './log/logging.txt' host = addr[0] port = addr[1] method = request[:4] headers = request.split('\n') filename = headers[0].split()[1] f = open(path, "a ") f.writelines('Server used: ' host '\n' 'Port used: ' port '\n' 'Method Served: ' method '\n' 'Filename: ' filename '\n\n') f.close() return Logs().do_LOG("<addr>", "<request>")
希望這可以幫助!
uj5u.com熱心網友回復:
首先,小心使用適當的縮進(我懷疑這是復制你的代碼)。
其次,您選擇了我不知道的模式“a ”。為了寫入檔案,您應該使用 'w' 模式,我還建議提供編碼:
f = open(path, "w", encoding= "utf-8")
f.write('Server used: ' host '\nPort used: ' port '\n' 'Method Served: ' method '\n' 'Filename: ' filename '\n\n')
f.close()
如果這不起作用,可能是因為host, portor的值有問題,method然后您應該嘗試使用多次呼叫撰寫檔案,以查看問題發生的位置:
f.write('Server used')
f.write(host)
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/326346.html
