Python中文和時(shí)間
本文介紹使用Python SDK時(shí)所用到的中文和時(shí)間知識(shí)。
中文
在Python代碼中如果使用了中文字符,運(yùn)行時(shí)會(huì)出錯(cuò)。因此,您需要在代碼的開(kāi)頭部分加入字符編碼的聲明,例如:
# -*- coding: utf-8 -*-
數(shù)據(jù)類型
Python 2.x支持以下兩種數(shù)據(jù)類型:
數(shù)據(jù)類型
描述
str
字符串。對(duì)應(yīng)Python 3.x中的bytes類型。
unicode
unicode流。其長(zhǎng)度是字符數(shù),如
u'中文'
的長(zhǎng)度是2。Python 3.x支持以下兩種數(shù)據(jù)類型:
數(shù)據(jù)類型
描述
str
字符串。對(duì)應(yīng)Python 2.x中的unicode類型。
bytes
字節(jié)流。其長(zhǎng)度是字節(jié)數(shù),如
b'中文'
的長(zhǎng)度取決于編碼,如果是UTF-8編碼,則為6。輸入、輸出類型約定
輸入類型約定如下:
輸入
類型
備注
OSS文件名
str
如為bytes,要求是UTF-8編碼。
本地文件名
str, unicode
如為bytes,要求是UTF-8編碼,例如bucket.get_object_to_file里的yourLocalFile參數(shù)。
輸入數(shù)據(jù)流
bytes
例如bucket.put_object里的data參數(shù)。
輸出類型約定如下:
輸出
類型
備注
解析XML得到的結(jié)果
str
例如通過(guò)bucket.list_object得到結(jié)果中的字符串。
下載內(nèi)容
bytes
Python SDK默認(rèn)bytes類型經(jīng)過(guò)UTF-8編碼,請(qǐng)確保Python源文件也是UTF-8編碼。
類型轉(zhuǎn)換函數(shù)
Python SDK提供了三個(gè)用于類型轉(zhuǎn)換的函數(shù):
函數(shù)
描述
to_bytes
- Python 2.x中,把unicode轉(zhuǎn)換為str。其他類型則原值返回。
- Python 3.x中,把str轉(zhuǎn)換為bytes。其他類型則原值返回。
to_unicode
- Python 2.x中,把str轉(zhuǎn)換為unicode。其他類型則原值返回。
- Python 3.x中,把bytes轉(zhuǎn)換為str。其他類型則原值返回。
to_string
Python 2.x中相當(dāng)于to_bytes。Python 3.x中相當(dāng)于to_unicode。
時(shí)間
Python SDK會(huì)把從服務(wù)器獲得的時(shí)間戳字符串(datetime.datetime類型的時(shí)間)都轉(zhuǎn)換為Unix Time類型的時(shí)間,即自1970年1月1日UTC零點(diǎn)以來(lái)的秒數(shù)。例如bucket.get_object方法返回結(jié)果中的last_modified就是一個(gè)int類型的Unix Time。
您可以通過(guò)datetime.datetime.fromtimestamp()方法進(jìn)行時(shí)間轉(zhuǎn)換,得到時(shí)間戳字符串。