如何将数据结果写入python中的输出文件
Posted
技术标签:
【中文标题】如何将数据结果写入python中的输出文件【英文标题】:How to write data results into an output file in python 【发布时间】:2016-09-05 18:54:39 【问题描述】:我编写了这段代码来分析和搜索地质坐标以了解数据点的接近程度。由于我有这么多数据点,PyCharm 中的输出变得超载,给了我一堆废话。从那时起,我一直在尝试通过将真/假结果写入计算机上的单独文档来解决这个问题。
这段代码的重点是分析file1中的坐标与file2中所有元素的接近程度。然后返回共享接近度的任何结果匹配的坐标。正如您将在下面看到的那样,我编写了一个嵌套的 for 循环来执行此操作,我理解这可能是一种蛮力策略,所以如果有人有更优雅的解决方案,我会很乐意了解更多。
import numpy as np
import math as ma
filename1 = "C:\Users\Justin\Desktop\file1.data"
data1 = np.genfromtxt(filename1,
skip_header=1,
usecols=(0, 1))
#dtype=[
#("x1", "f9"),
#("y1", "f9")])
#print "data1", data1
filename2 = "C:\Users\Justin\Desktop\file2.data"
data2 = np.genfromtxt(filename2,
skip_header=1,
usecols=(0, 1))
#dtype=[
#("x2", "f9"),
#("y2", "f9")])
#print "data2",data2
def d(a,b):
d = ma.acos(ma.sin(ma.radians(a[1]))*ma.sin(ma.radians(b[1]))
+ma.cos(ma.radians(a[1]))*ma.cos(ma.radians(b[1]))* (ma.cos(ma.radians((a[0]-b[0])))))
return d
results = open("results.txt", "w")
for coor1 in data1:
for coor2 in data2:
n=0
a = [coor1[0], coor1[1]]
b = [coor2[0], coor2[1]]
#print "a", a
#print "b", b
if d(a, b) < 0.07865: # if true what happens
results.write("\t".join([str(coor1), str(coor2), "True", str(d)]) + "\n")
else:
results.write("\t".join([str(coor1), str(coor2), "False", str(d)]) + "\n")
results.close()
这是我运行代码时收到的错误消息:
results.write("\t".join([str(coor1), str(coor2), "False", str(d)]) + "\n")
ValueError: I/O operation on closed file
我认为我的问题是我不明白我应该如何将文件以有意义的格式写入、保存和组织到我的计算机中。因此,再次,如果有人有任何意见或建议,我将非常感谢您的支持!
【问题讨论】:
【参考方案1】:我的建议:将写入文件的代码放入上下文管理器中。例如。 https://jeffknupp.com/blog/2016/03/07/python-with-context-managers/
【讨论】:
以上是关于如何将数据结果写入python中的输出文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用从 python 中的 DataFrame 生成的结果写入 csv?