如何使用python将多个变量写入文件?

时间:2015-03-16 08:57:16

标签: python

我正在尝试在一个文件中写入多个变量。 并且希望避免单独编写所有变量及其类型。

我用以下内容创建了varibales:

for i in range(100):
    globals()['doc%s' %i] = 5.*i

将其写入文件:

df = open("test.csv")
df.write("%0.10.f;%0.10.f" % (doc1, doc2))

但我想避免在最后一行内写出所有100个带有类型的名字。

这可能吗?有没有人有想法? 谢谢!

4 个答案:

答案 0 :(得分:1)

您的问题是您首先动态创建变量。这样做真的没有充分的理由。只需创建一个doc dict,然后就可以将其写入文件。

答案 1 :(得分:1)

你不应该使用100个变量。而是使用包含100个值的列表。然后,您可以简单地遍历列表(或列表中的值对),并在出发时写出值。

doc = [5.*i for i in range(100)]
pairs = zip(*[iter(doc)]*2)
with open("test.csv") as df:
    for a, b in pairs:
        df.write("{0.10f};{0.10f}\n".format(a, b))

答案 2 :(得分:0)

如果必须以这种方式生成变量,则可以使用类似的globals for循环来再次动态检索变量。

例如:

data = [globals()['doc%s' % i] for i in range(100)]

将变量(doc0 ... doc99)放入名为data的列表中。然后,您可以操作列表以您希望的格式打印它。

formatted_data = ["%0.10f" % point for point in data]
df = open("test.csv", "wb")
df.write(";".join(formatted_data))
df.close()

答案 3 :(得分:-1)

使用eval()

for i in range(100):
    globals()['doc%s' % i] = 5. * i

df = open("test.csv", mode='w')

for i in range(100):
    df.write("%0.10f;" % eval('doc%s' % i))

亲自尝试一下。 (我的python版本2.7.8)