-1

こんにちは、オブジェクトを独自の名前で csv に保存するための小さなヘルパー関数を作成しようとしています。

私はデータの配列を扱っています。これは、配列を簡単に視覚化して編集しやすくするための回避策を意図しています。

私が直面している課題は、変数を以下の MWExの名前まで参照する関数を取得する方法が不明であることです。a私ができるようにしたいのは、として保存することa.csvです。getattr()うまくいかないので困っています。

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)

name(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()

コメントや改善点を歓迎します。

4

2 に答える 2

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'}

しかし、あなたの質問はかなりまばらなので、よくわかりません。

于 2013-05-25T12:36:16.280 に答える