如何在python中将数组保存到文本文件?

Posted

技术标签:

【中文标题】如何在python中将数组保存到文本文件?【英文标题】:How save a array to text file in python? 【发布时间】:2019-01-22 10:47:39 【问题描述】:

我有一个这种类型的数组:

xyz = [['nameserver','panel'], ['nameserver','panel']]

如何以这种格式将其保存到 abc.txt 文件中:

nameserver panel
nameserver panel

我在迭代每一行时尝试了这个:

np.savetxt("some_i.txt",xyz[i],delimiter=',');

显示此错误:

TypeError: Mismatch between array dtype ('<U11') and format specifier 
('%.18e')

【问题讨论】:

您的原始列表包含nameservers,但已保存文件--nameserver(末尾没有s 您可以浏览您的列表并将其打印到屏幕上吗? (只是想弄清楚你遇到了什么问题) numpy 的 savetxt 方法有一个默认格式说明符:fmt='%.18e',用于保存浮点数而不是字符串。因此出现错误。 【参考方案1】:

您可以直接将其写入文件。

with open('outfile.txt', 'w') as f:
    f.write('\n'.join([' '.join(l2) for l2 in l1]))

l1 是您提供的列表。

【讨论】:

不要在变量名中使用l 让事情变得不可读,尤其是与1l1ll11l1l111l1l1ll 混合时——你能读懂吗? @lenik 所以我不能命名我的变量locationletter?您不应该使用 l 作为单个字符变量名,对此没有其他限制 (PEP-8) 12 不是变量名...@lenik ;) 不能是 joined【参考方案2】:

多种可能性之一:

stuff = [['nameservers','panel'], ['nameservers','panel']]
with open("/tmp/out.txt", "w") as o:
    for line in stuff:
        print(" ".format(line[0], line[1]), file=o)

【讨论】:

【参考方案3】:

这是一个可能的解决方案:

data = [['nameservers','panel'], ['nameservers','panel']]

with open("output.txt", "w") as txt_file:
    for line in data:
        txt_file.write(" ".join(line) + "\n") # works with any number of elements in a line

【讨论】:

【参考方案4】:

使用csv.writer:

import csv

data = [['nameservers','panel'], ['nameservers','panel']]

with open('tmp_file.txt', 'w') as f:
    csv.writer(f, delimiter=' ').writerows(data)

tmp_file.txt 现在会喜欢这个

nameservers panel
nameservers panel

【讨论】:

【参考方案5】:

可能最简单的方法是使用json模块,一步将数组转换为list:

import json

with open('output.txt', 'w') as filehandle:
json.dump(array.toList(), filehandle)

使用 json 格式允许许多不同系统之间的互操作性。

【讨论】:

美丽的方法。

以上是关于如何在python中将数组保存到文本文件?的主要内容,如果未能解决你的问题,请参考以下文章

在Python中将文本附加到文件[重复]

如何在 Python 中将对象数组保存到文件中

在 C++ 中将某种结构化的文本文件读入数组

在文本文件中保存多个数组(python)

Python:在文本文件中将数据从垂直旋转到水平

如何在python中将文本字符串列表转换为熊猫数据框?