如何读取文本文件的前N行并将其写入另一个文本文件?

时间:2015-11-25 03:12:59

标签: python lines

以下是我之前代码修改过的代码。 但是,我收到了这个错误:

TypeError: must be str not list in f1.write(head)

这是产生此错误的代码部分:

from itertools import islice
with open("input.txt") as myfile:
    head = list(islice(myfile, 3))
f1.write(head)

f1.close()  

1 个答案:

答案 0 :(得分:4)

好吧,你说得对,使用islice(filename, n)会获得文件n的第一行filename行。这里的问题是当你尝试将这些行写入另一个文件时。

错误非常直观(我添加了在这种情况下收到的完整错误):

TypeError: write() argument must be str, not list

这是因为 f.write() 接受字符串作为参数,而不是list类型。

因此,不是按原样转储列表,而是使用for循环将其内容写入另一个文件中:

with open("input.txt", "r") as myfile:
    head = list(islice(myfile, 3))

# always remember, use files in a with statement
with open("output.txt", "w") as f2:
    for item in head:
        f2.write(item)

当然,列表的内容是所有类型str,这就像魅力一样;如果没有,您只需要将item循环中的每个for打包在 str() 调用中,以确保将其转换为字符串。

如果您想要一种不需要循环的方法,您总是可以考虑使用 f.writelines() 代替f.write() (和看看Jon对writelines)的另一个提示的评论。