函数无法 return 列表的值

Function not able to return values of list

我正在尝试将一组值写入文件。虽然它成功打印了输出,但当我尝试写入文件时,我收到错误 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' object has no attribute 'write'.

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

您的文件 open('Time_0', 'w+') 和函数 def time 同名。由于您是在打开文件后定义函数,因此 time 指的是函数,而不是文件。为其中之一选择不同的名称。

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

您在此之后定义了一个 time 函数:time = open('Time_0', 'w+').

因此,Python 会将名称 time 重新绑定到您的函数,并且由于您的函数没有 write 属性,所以您得到的错误是完全合理的。

我猜你会 运行 陷入冲突,使用 'time' 一次作为文件的处理程序,然后作为一个函数。

您正在尝试将 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)
time = open('Time_0', 'w+')

iterations = 0

def time():

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