如何将最后50行从一个文件写入另一个文件

chr*_*ley 0 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()
Run Code Online (Sandbox Code Playgroud)

我在尝试此代码时收到以下错误消息:

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
Run Code Online (Sandbox Code Playgroud)

谢谢

结果摘要是存储地址的变量.

result_summary = (t, 'results_summary.txt')
Run Code Online (Sandbox Code Playgroud)

抱歉犯了一个愚蠢的错误,我忘了添加os.path.join

result_summary = os.path.join(t, 'results_summary.txt')
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

@alok这是一个目录地址,我忘了添加os.join使其成为一个字符串.这是造成错误的原因

YOU*_*YOU 5

TypeError: coercing to Unicode: need string or buffer, tuple found
Run Code Online (Sandbox Code Playgroud)

错误说它期望字符串或缓冲区,但你正在传递tuple,所以只需加入它""使其成为字符串

所以,试试吧

sum_file = "".join(fp.readlines()[-50:])
Run Code Online (Sandbox Code Playgroud)

更新:因为OP更新了问题

如果 result_summary = (t, 'results_summary.txt')

尝试

myfile = open(result_summary[1],'w')
Run Code Online (Sandbox Code Playgroud)