我正在创建一个过夜构建的电子邮件回复,我想从结果文件中获取最后50行并将其放入摘要文件中。我所做的代码如下,有人可以帮忙吗?
def email_success():
fp = open(results_file, 'r')
sum_file = (fp.readlines()[-50:])
fp.close()
myfile = open(result_summary,'w')
myfile.write(sum_file)
myfile.close()
尝试此代码时,我收到以下错误消息:
Traceback (most recent call last):
File "email_success.py", line 76, in <module>
if __name__ == '__main__': myObject = email_success()
File "email_success.py", line 45, in email_success
myfile = open(result_summary,'w')
TypeError: coercing to Unicode: need string or buffer, tuple found
由于
结果摘要是一个存储地址的变量。
result_summary = (t, 'results_summary.txt')
抱歉犯了一个愚蠢的错误,我忘了添加os.path.join
result_summary = os.path.join(t, 'results_summary.txt')
感谢您的帮助
@alok这是一个目录地址,我忘了添加os.join使它成为一个字符串。这是造成错误的原因
答案 0 :(得分:5)
TypeError: coercing to Unicode: need string or buffer, tuple found
错误表示它的预期字符串或缓冲区,但您传递tuple
,因此只需将其与""
连接即可使其成为字符串
所以,试试
sum_file = "".join(fp.readlines()[-50:])
更新:因为OP更新了问题
如果result_summary = (t, 'results_summary.txt')
尝试
myfile = open(result_summary[1],'w')
答案 1 :(得分:2)
它是open()引发异常但是......你是如何定义result_summary的?
答案 2 :(得分:2)
result_summary
是一个元组,它必须是str
或缓冲区。您的解释与您发布的错误无关。
答案 3 :(得分:1)
result_summary = (t, 'results_summary.txt')
和
myfile = open(result_summary,'w')
装置
myfile = open((t, 'results_summary.txt'),'w')
显然无效,请尝试:
myfile = open(result_summary[1],'w')
代替
答案 4 :(得分:0)
fp.readlines()
方法返回一个行列表。
因此,您无法应用[-50:]
运算符。