Python创建了一个快速将文件写入文件的函数

时间:2013-05-25 12:32:29

标签: python function csv

您好我正在尝试编写一个小辅助函数,以便以自己的名义将对象保存到csv。

我正在处理数据数组,这是一种解决方法,可以帮助您轻松地可视化数组,以帮助编辑它。

我面临的挑战是,我不清楚如何让函数通过x变量查看下面MWE中a的名称。我希望能够做的是将其保存为a.csvgetattr()不起作用,所以我很难过。

import random
import csv

def csvit(x):
    f=open(name(x)+'.csv','wb'):
    writer = csv.writer(f,quotechar='"', quoting=csv.QUOTE_ALL)
    [writer.writerow(i) for i in x]
    f.close()


a = []
for i in range(10):
    t = [random.randint(0,1000) for r in range(10)]
    a.append(t)

名称(x)不是工作函数,我不知道在其位置使用什么。我真的在寻找fun(x)产生["a"]

的函数

为了完整性,似乎在@PhilCooper的答案背后起作用的代码是

import csv

def csvit(x):
    tmp = next(key for key,val in globals().items() if val == x and not key.startswith('_'))
    f=open('/home/me/Desktop/csvs/'+tmp+'.csv','wb')
    writer = csv.writer(f,quotechar='"', quoting=csv.QUOTE_ALL,dialect=csv.excel)
    [writer.writerow(i) for i in x]
    f.close()

欢迎任何评论或改进。

2 个答案:

答案 0 :(得分:2)

看起来您要求调用范围中的对象名称。在python中,对象的名称不是对象的一部分,它是当前作用域中的键(即在locals()或globals()中)

你能找到吗?是的,但它可能在该范围内有多个名称:

next(key for key,val in globals().items() if val is x and not key.startswith('_'))

b = a
#do you want b or a as the name now?

这只是假设全球范围。更丑的是,你真的必须检查帧堆栈,然后..... ahhhhh

只需传递你想要的名字,然后安然入睡。

如果你想做一些奇特的事情,那么创建一个类或命名元组,但保持简单。

答案 1 :(得分:1)

我认为你正在寻找 dict 或dir(obj),但不确定。

>>> class Foo (object):
...     def __init__ (self):
...             self.bar = 'foobar'
... 
>>> foo = Foo()
>>> dir(foo)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'bar']
>>> foo.__dict__
{'bar': 'foobar'}

但由于你的问题相当稀疏,我不确定。