23
votes

I have a textfile.txt like this:

First Line
Second Line
Third Line
Fourth Line
Fifth Line
Sixth Line

How can I remove the first three lines and the last line most comfortable?

5

5 Answers

39
votes
with open('textfile.txt') as old, open('newfile.txt', 'w') as new:
    lines = old.readlines()
    new.writelines(lines[3:-1])
16
votes

This one doesn't use readlines() so it is ideal for bigger sized files.

numline=3 #3 lines to skip
p=""
o=open("output.txt","a")
f=open("file")
for i in range(numline):
    f.next()
for line in f:
    if p:
        o.write(p)
    p=line
f.close()
o.close()

Since there's a sed answer, here's an awk one

$ awk 'NR>=4{if(p)print p;p=$0;}' file
Fourth Line
Fifth Line
4
votes
data="".join(open("textfile.txt").readlines()[3:-1])
open("newfile.txt","wb").write(data)
0
votes
f = open('file1.txt').readlines()

open('file1.txt', 'w').writelines(lines[4:])

This code snippet will delete first four line from fie name "file1.txt"

-4
votes

No Python solution but since your problem is a classic, I present you a sed solution.

$ sed -n -e "4,5p" textfile.txt

Of course the address 4,5 only works for exactly your input and required output :)