如何在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
让事情变得不可读,尤其是与1
、l1ll11l1l111l1l1ll
混合时——你能读懂吗?
@lenik 所以我不能命名我的变量location
或letter
?您不应该使用 l
作为单个字符变量名,对此没有其他限制 (PEP-8)
12
不是变量名...@lenik ;) 不能是 join
ed【参考方案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中将数组保存到文本文件?的主要内容,如果未能解决你的问题,请参考以下文章