如何检查文件是否为空?

3

我想检查json文件是否为空。在代码中应该在哪里正确检查它?这是我的代码:

import os
import sys
import traceback
import json
import requests
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())

try:
    API_ENDPOINT = os.getenv('OVERPASS_API_ENDPOINT', 'http://overpass.osm.ch/api/interpreter')

    query = "".join(sys.stdin.readlines())
    r = requests.get(API_ENDPOINT, params={'data': query})
    print(json.dumps(r.json(), sort_keys=True, indent=2))
except Exception as e:
    print("Error: %s" % e, file=sys.stderr)
    print(traceback.format_exc(), file=sys.stderr)
    sys.exit(1)

感谢您的帮助。
1个回答

4

可以简单地将其与空字典进行比较:

r.json() == {}

或者
r.json() == dict()

或者
len(r.json()) == 0

编辑:看起来你可能根本没有收到 JSON 响应,要检查这一点,可以添加以下条件:

if r.headers.get('content-type') == 'application/json':
    if r.json() == {}:
        # rest of your code

@ChristianNüssli请标记答案为已接受以解决问题(点击勾号)。 - Jarvis
嗨 @Jarvis。不幸的是,您提出的每个建议都不能与 GH Actions 一起使用。还有其他解决方案吗? - Christian Nüssli
你想要什么作为输出?预期和实际结果是什么? - Jarvis
@ChristianNüssli 在打印你的JSON之前,应该先检查我添加的条件语句。 - Jarvis
我尝试了,但操作仍然失败。每次我都会收到一个json,但有时API没有正确响应,json文件为空。 - Christian Nüssli
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接