如何将一个文件的最后50行写入另一个文件 Python
我正在创建一个邮件回复,内容是关于一个过夜构建的结果。我想从结果文件中提取最后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把它变成一个字符串了。这就是导致错误的原因。
5 个回答
2
其实是open()这个函数引发了异常……你是怎么定义result_summary的呢?
5
TypeError: coercing to Unicode: need string or buffer, tuple found
错误提示说它期待的是字符串或者缓冲区,但你传入的是一个tuple
(元组),所以只需要用""
把它连接起来,变成字符串就可以了。
所以,试试这样做:
sum_file = "".join(fp.readlines()[-50:])
更新: 因为提问者更新了问题
如果result_summary = (t, 'results_summary.txt')
那么试试:
myfile = open(result_summary[1],'w')
2
result_summary
是一个元组,它需要是一个 str
(字符串)或者缓冲区。你的解释和你提到的错误没有关系。