有没有一种方法可以存储程序执行的所有GET请求的值?

问题描述

所以我有以下程序:

client = Socrata("www.datos.gov.co",None)

# Example authenticated client (needed for non-public datasets):
# client = Socrata(www.datos.gov.co,#                  MyAppToken,#                  userame="user@example.com",#                  password="AFakePassword")

# First results,returned as JSON from API / converted to Python list of
# dictionaries by sodapy.
  results = client.get("gt2j-8ykr",limit=800000)

# Convert to pandas DataFrame
  results_df = pd.DataFrame.from_records(results)

现在,每次我运行代码时,变量'results'都具有预期的新更新值,因此数据框'results_df'也是如此。我想要做的是保存程序执行的所有GET请求(更确切地说,我只需要len(results_df))。有人建议我列出并附加len(results_df)。但是,这显然不起作用,因为它只是附加了len(results_df)的当前值,它没有保存len(results_df)的先前值,因此每次我运行代码时,我都会得到一个包含当前单个值的列表的len(results_df)。但是,我想要的是保存以前程序执行的len(results_df)以前值的列表。

对不起,如果这是一个愚蠢的问题,但是我是编码新手,我在任何地方都找不到任何解决方案。谢谢

解决方法

使用持久性文件存储并将结果长度存储在光盘上:

def write_log_of_lengths(dataframelength):
    from datetime import datetime 
    import os.path

    log_name = "my_request_log"
    if not os.path.isfile(log_name):
        with open(log_name,"w") as f:
            f.write( f"datetime,lenght_data\n" )   

    with open(log_name,"a") as f:
        f.write( f"{datetime.now()},{dataframelength}\n" )

然后使用

# your code

results_df = pd.DataFrame.from_records(results)
write_log_of_lengths(len(results_df))

示例:

write_log_of_lengths(5)
write_log_of_lengths(7)
write_log_of_lengths(22)

通过以下方式获取文件

datetime,lenght_data
2020-09-07 07:37:17.889504,5
2020-09-07 07:37:17.892475,7
2020-09-07 07:37:17.895424,22

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...