Here is the code I modified from previous code.
But, I got this error:
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))
Well, you have it right, using
islice(filename, n) will get you the first
n lines of file
filename. The problem here is when you try and write these lines to another file.
The error is pretty intuitive (I've added the full error one receives in this case):
TypeError: write() argument must be str, not list
This is because
f.write() accepts strings as parameters, not
So, instead of dumping the list as is, write the contents of it in your other file using a
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)
Granted that the contents of the list are all of type
str this works like a charm; if not, you just need to wrap each
item in the
for loop in an
str() call to make sure it is converted to a string.
If you want an approach that doesn't require a loop, you could always consider using
f.writelines() instead of
f.write() (and, take a look at Jon's comment for another tip with