将许多 python 变量的列表保存到 excel sheet 中,同时保持变量类型已定义?

Saving list of many python variables into excel sheet while simultaneously keeping variable types defined?

xlsxwriter 可以将变量保存到现有的 excel 文件并在之后读取它们,尽管问题是变量在我的 excel 文件中存储为字符串。

假设我有一个包含许多不同类型(pd.datetimerange、pd.df、np.arrays 等)的列表,如果我将它们保存到 excel 文件变量类型将丢失。

另外,Python 脚本是从我的 Excel 文件中调用的,所以我无法在不编写 VBA 脚本的情况下更改其中的任何内容。这会暂时关闭我的工作簿,转储字符(比如 pickle 字符串)并重新打开它。

是否可以在不先编写解析函数的情况下从 excel 文件中检索类型(这将采用 excel 字符串并以等效的变量类型生成我)?

根据您的评论,您可以 eval 通过将适当的本地字典与您的字符串一起传递到 eval 来正确处理某些模块的本地符号。这是一个可行的解决方案:

import pandas as pd

def getlocals(obj, lcls=None):
    if lcls is None: lcls = dict(locals().items())

    objlcls = {k:v for k,v in obj.__dict__.items() if not k.startswith('_')}
    lcls.update(objlcls)

    return lcls

x = "[123,DatetimeIndex(['2018-12-04','2018-12-05', '2018-12-06'],dtype='datetime64[ns]', freq='D')]"
lcls = getlocals(pd)

result = eval(x, globals(), lcls)
print(result)

输出:

[123, DatetimeIndex(['2018-12-04', '2018-12-05', '2018-12-06'], dtype='datetime64[ns]', freq='D')]

作为负责人,我也有责任警告您,在您的应用程序中使用 eval 是非常不安全的。 are many discussions 的危险 eval,其中 none 表明有一种方法可以完全减轻这些危险。如果您选择使用此代码,请小心。