如何将数据结果写入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中的输出文件的主要内容,如果未能解决你的问题,请参考以下文章

将for循环的输出写入python中的csv

在python中使用线程时如何保留文件写入顺序

如何使用从 python 中的 DataFrame 生成的结果写入 csv?

如何并行处理数据但将结果写入 Spark 中的单个文件

如何将 JSON 结构化数据写入 Python 中的文本文件?

python 如何将数据写入某个csv文件的特定位置?