【问题标题】:Append function results to file将函数结果附加到文件
【发布时间】:2016-01-18 20:42:21
【问题描述】:

我正在尝试运行一个函数,该函数在一个数字范围内返回两个值,并将返回的值存储到 ASCII.txt 文件中。

我的代码是这样的:

site = np.genfromtxt('...\Plot_1.txt', dtype=None, delimiter='\t')

def process(matrix, kernel_size, kernel_dilation, kernel_zs, kernel_norm, local_chm, threshold_value):
    ker_size = kernel_size
    ker_bx = 0
    ker_by = 0
    ker_a = kernel_dilation
    ker_zs = kernel_zs
    ker_norm = kernel_norm
    loc_chm = local_chm
    th_value = threshold_value        

    return ker_size, nr_trees #both are float numbers

for i in range(1, 6, 2):
    list = []
    a = process(site, 5, i, 2, 1, 2, 0.9) #This is the function, only returns two values
    print a, type(a), np.shape(a)
    list.append(a)
    print list
    with open('E:\Test_matrix_automatic.txt', 'a') as outfile:
        outfile.write(list)

它给出了错误:

TypeError: 应为字符串或其他字符缓冲区对象

我不知道如何解决这个问题。我没有使用返回两个值的函数。

【问题讨论】:

  • 请显示堆栈跟踪。
  • 对不起,我不知道你指的是什么。我是编程初学者。
  • 您的代码中的site 是什么,它在哪里定义?
  • Stacktrace 是完整的错误;不仅仅是一条线。它显示了发生错误的上下文。
  • 打印 Python 向您显示的完整错误消息,以及它打印的所有内容。

标签: python list ascii


【解决方案1】:

您正在从 process() 返回一个浮点元组并将其附加到列表中。 正如错误消息所述,文件对象的 write() 方法需要一个字符串或一个字符缓冲区对象,但您将其交给一个列表,其中包含浮点元组。 您应该在打印之前将列表转换为字符串。

你可以试试这样的:

with open('E:\Test_matrix_automatic.txt', 'a') as outfile:
    for item in list:
        outfile.write(str(item) + '\n')

【讨论】:

  • 这行得通,谢谢!我只需要让它不打印文件中的括号(例如:'(5, 0)'),但在这里就足够了。 :)
猜你喜欢
  • 2019-11-19
  • 2018-06-18
  • 2021-01-11
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
  • 2010-11-10
  • 2015-06-08
  • 2017-03-28
相关资源
最近更新 更多