我正在尝试将一组值写入文件。同时,它成功打印输出,当我尝试写入文件时,我收到错误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'。
这似乎是微不足道的,但是我无法看到这里发生了什么。 `
答案 0 :(得分:0)
您的文件open('Time_0', 'w+')
和函数def time
共享相同的名称。由于您在打开文件后定义了功能,time
引用的是函数,而不是文件。为其中一个选择一个不同的名称。
答案 1 :(得分:0)
您使用句柄time
,time = 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
。你必须改变其中一个。