繁体   English   中英

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

[英]How to write last 50 lines from one file to another 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使其成为一个字符串。 这是导致错误的原因

TypeError: coercing to Unicode: need string or buffer, tuple found

错误指出其期望的字符串或缓冲区,但是您正在传递tuple ,因此只需将其与""连接起来即可使其成为字符串

所以,尝试

sum_file = "".join(fp.readlines()[-50:])

UPDATE :因为OP更新了问题

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

尝试

myfile = open(result_summary[1],'w')

它是open()引发异常,但是...您如何定义result_summary?

result_summary是一个元组,它必须是str或buffer。 您的解释与您发布的错误无关。

result_summary = (t, 'results_summary.txt')

 myfile = open(result_summary,'w')

手段

 myfile = open((t, 'results_summary.txt'),'w')

显然不起作用,请尝试:

 myfile = open(result_summary[1],'w')

代替

fp.readlines()方法返回行列表。 因此,您不能应用[-50:]运算符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM