函数无法返回列表的值

时间:2015-01-21 10:03:01

标签: python list function return-value

我正在尝试将一组值写入文件。同时,它成功打印输出,当我尝试写入文件时,我收到错误AttributeError: 'function' object has no attribute 'write'。代码如下:

time = open('Time_0', 'w+')

iterations = 0

def time():
    iteration_time = re.findall(r'^Time\s+=\s+(.*)', line)
    for t in iteration_time:
        global iterations
        iterations = iterations +1
        return (iteration_time, iterations) 

with open(logFile,'r') as logFile_read:
    for line in logFile_read:
        if 'Time' in line:
            iterationTime = time()
            print iterationTime
            #time.write("%s" % iterationTime)

以上输出如下(根据需要):

(['1'], 1)
(['2'], 2)
(['3'], 3)
(['4'], 4)
(['5'], 5)
(['6'], 6)
(['7'], 7)
(['8'], 8)
(['9'], 9)
(['10'], 10)

如果我取消注释最后一行time.write("%s" % iterationTime)并运行相同的代码,我会得到`AttributeError:'function'对象没有属性'write'。

这似乎是微不足道的,但是我无法看到这里发生了什么。 `

6 个答案:

答案 0 :(得分:0)

您的文件open('Time_0', 'w+')和函数def time共享相同的名称。由于您在打开文件后定义了功能,time引用的是函数,而不是文件。为其中一个选择一个不同的名称。

答案 1 :(得分:0)

您使用句柄timetime = open('Time_0', 'w+')def time():引用的两个对象。由于def time():是后来的声明,time,在调用time.write时,指的是函数。重构名称。

答案 2 :(得分:0)

您之后定义了time函数:time = open('Time_0', 'w+')

因此,Python会将名称time重新绑定到您的函数中,并且由于您的函数没有write属性,因此您获得的错误非常合理。

答案 3 :(得分:0)

我猜你正在使用' time'一次作为文件的处理程序,其次作为函数。

答案 4 :(得分:0)

您正在尝试将time函数用作文件 - 这就是错误消息告诉您的内容。问题来自于您首先打开Time_0文件并将其存储在time变量下,然后您定义了一个覆盖以前打开的文件的time函数。

相反,你应该这样做:

iterations = 0

def time():
    iteration_time = re.findall(r'^Time\s+=\s+(.*)', line)
    for t in iteration_time:
        global iterations
        iterations = iterations +1
        return (iteration_time, iterations) 

with open('Time_0', 'w+') as output_file:
    with open(logFile,'r') as logFile_read:
        for line in logFile_read:
            if 'Time' in line:
                iterationTime = time()
                print iterationTime
                output_file.write("%s" % iterationTime)

答案 5 :(得分:0)

time = open('Time_0', 'w+')

iterations = 0

def time():

您有一个名为time的变量和一个函数time。你必须改变其中一个。