函数无法 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
指的是函数,而不是文件。为其中之一选择不同的名称。
您使用了句柄 time
、time = 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
。你必须改变其中之一。
我正在尝试将一组值写入文件。虽然它成功打印了输出,但当我尝试写入文件时,我收到错误 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
指的是函数,而不是文件。为其中之一选择不同的名称。
您使用了句柄 time
、time = 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
。你必须改变其中之一。