1
我寫了一個httpserver來爲python2.7和python3.5提供html文件。python3將str轉換爲字節式的obj而不使用編碼
def do_GET(self):
...
#if resoure is api
data = json.dumps({'message':['thanks for your answer']})
#if resource is file name
with open(resource, 'rb') as f:
data = f.read()
self.send_response(response)
self.send_header('Access-Control-Allow-Origin', '*')
self.end_headers()
self.wfile.write(data) # this line raise TypeError: a bytes-like object is required, not 'str'
該代碼在python2.7中工作,但在python 3中,它引發了上述錯誤。
我可以使用bytearray(data, 'utf-8')
將str轉換爲字節,但html在web中更改。
我的問題: 怎麼做才能支持python2和python3不使用2to3的工具和不改變文件的編碼。
有沒有更好的方式來讀取文件,並在python2和python3中以相同的方式將內容發送到客戶端?
在此先感謝。
你的意思是在Python 3中。在這種情況下,僅在python中將返回值轉換爲'bytes(return_value,「ascii」)「。3.用'if if sys.version_info> =(3,):' –
謝謝。:-)測試版本, –