我愿意使用与变量相同的名称保存文件。请参见以下代码:
training = np.arange(200)
np.savetxt(training.txt,training)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'txt'
当我使用双引号时,它将很明显地起作用:
np.savetxt("training.txt",training)
但是在我的程序中有不同的变量,我希望当我调用文件保存函数时,文件名应自动作为变量名本身。
例如,如果变量是question
或answer
,那么当我说save()
时,文件名应自动为question.txt
或answer.txt
建议我该怎么做。
答案 0 :(得分:3)
这没有什么好的方法。 Python中的变量只是对实际对象的引用。名字没关系。
您需要一种使用给定名称存储变量的方法,这就是关联表的含义,而这就是Python中的dict
。
这类似于:
variables={}
variables["training"] = np.arange(200)
for key, val in variables.items():
np.savetxt(key, value)
答案 1 :(得分:1)
在Python中使用标识符名称很麻烦(并且不打算将其作为惯例)。您为什么不尝试使用字典?
import np
my_dict = dict()
def save(name: str):
np.savetext('{}.txt'.format(name), my_dict[name])
my_dict['training'] = np.arange(200)
save('training')
答案 2 :(得分:0)
一种非常骇人听闻的方法是从本地符号表中获取变量名称。如果您知道只有一个数组,则可以简单地得到第一个结果。
>>>
>>> import numpy as np
>>> training = np.arange(200)
>>> def getndarrayname(env):
... return list(filter(lambda x: isinstance(env[x], np.ndarray), env.keys()))
...
>>> getndarrayname(locals())
['training']
>>>