Export函数,在输入变量之后命名导出文件

2024-04-25 07:15:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望得到一个导出Numpy数组的函数,但是使用输入到函数的变量的名称作为导出文件的名称。比如:

MyArray = [some numbers]

def export(Varb):
    return np.savetxt("%s.dat" %Varb.name, Varb)

export(MyArray)

它将输出一个名为'我的数组.dat'填充了[一些数字]。我不知道怎么做变量名称“比特。有什么建议吗?在

我是Python和编程新手,所以我希望有一些简单的东西我错过了! 谢谢。在


Tags: 文件函数numpy名称returndefnpexport
1条回答
网友
1楼 · 发布于 2024-04-25 07:15:11

我不推荐这样的代码样式,但您可以这样做:

import copy
myarray = range(4)
for k, v in iter(copy.copy(locals()).items()):
    if myarray == v:
        print k

这将把myarray作为输出。要在对导出有用的函数中执行此操作,请使用:

^{pr2}$

locals()globals()都提供了将变量名称作为键和变量值作为值的字典。在

按以下方式使用函数:

some_data = list(range(4))
export_with_name(some_data)

提供一个名为some_data的文件

[0, 1, 2, 3]

作为内容。在

经过测试并与Python2.7和3.3兼容

网友
2楼 · 发布于 2024-04-25 07:15:11

你不能这样做。Python对象不知道在任何特定的时间,哪些命名变量引用了它们。当变量被取消引用并发送到函数时,您不知道它来自何处。考虑一下这段代码:

map(export, myvarbs)

在这里,varb位于某种容器中,甚至没有引用它们的命名变量。在

网友
3楼 · 发布于 2024-04-25 07:15:11
import os
import inspect
import re

number_array = [8,3,90]

def varname(p):

       for line in inspect.getframeinfo(inspect.currentframe().f_back)[3]:

           m = re.search(r'\bvarname\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)\s*\)', line)
           if m:
               return m.group(1)

def export(arg):

    file_name = "%s.dat" % varname(arg)
    fd = open(file_name, "w")
    fd.writelines(str(arg))
    fd.close()

export(number_array)

请参阅How can you print a variable name in python?以获取有关def varname()的更多详细信息

相关问题 更多 >