我有一个简单的基本问题,但我无法在网上或库文档中找到可靠的答案。
我有一个示例代码,使用 lib http.client 在 Python 中执行 GET 请求。 我想在执行 json.loads(response) 之前检查响应正文是否为空。
在文档中没有解释我如何找到使用 request 或 urllib 的在线资源,但我只能使用 http.client。
我尝试考虑检查响应长度
if conn.getresponse().length < 1:
print("Error: empty response")
else:
json.loads(conn.getresponse().read().decode())
但我认为它不可靠,所以我正在考虑类似的事情
if conn.getresponse().read():
json.loads(conn.getresponse().read().decode())
else:
print("Error: empty response")
我更喜欢它,但我不确定它是否有效:因为 conn.getresponse().read 返回一个二进制对象,例如
b'{\n "field" : "0"}
我的问题是
b'{}
是否会被视为空。
提前谢谢您。
问题:“
b'{}'
是否被视为空?”
答案:否
b''
是一个空字节序列。b'{}'
是两个字节的序列,分别为 {
和 }
。bool(b'') # False <=> Empty.
bool(b'{}') # True <=> Not Empty.
阅读字节文字。
但是,空字典将被视为空:
bool({}) # True <=> Empty.
通过
decode
可以将字节文字简单地转换为字符串。
b'{}'.decode() # Return '{}'
您可以使用
eval()
函数将字典的字符串转换为实际的 Python 字典,或者阅读 将字典的字符串表示形式转换为字典以获得更安全的(?)选项。
此外,如果它对于您的用例来说不是太脆弱,您可以使用表达式:
if response == b'{}':
...