Auclown
Auclown

Reputation: 308

How to add the line number at the beginning of each line in a file

So.. I need to read a file and add the line number at the beginning of each line. Just as the title. How do you do it?

For example, if the content of the file was:

This
is
a
simple
test
file

These 6 lines, I should turn it into

1. This
2. is
3. a
4. simple
5. test
6. file

Keep the original content, but just adding the line number at the beginning.

My code looks like this so far:

def add_numbers(filename):
    f = open(filename, "w+")
    line_number = 1
    for line in f.readlines():
        number_added = str(line_number) + '. ' + f.readline(line)
        line_number += 1
        return number_added

But it doesn't really show anything as the result. I have no clues how to do it. Any help?

Upvotes: 1

Views: 1269

Answers (1)

Durske
Durske

Reputation: 106

A few problems I see in your code:

  • You indentation is not correct. Everything below the def add_numbers(): should be indented one level.
  • It is good practice to close a file handle at the end of your method.

A similar question to yours was asked here. Looking at the various solutions posted there, using fileinput seems like your best bet because it allows you to edit your file in-place.

import fileinput
def add_numbers(filename):
    line_number = 1
    for line in fileinput.input(filename, inplace=True):
        print("{}. {}".format(line_number, line))
        line_number += 1

Also note that I use format to combine two strings instead adding them together, because this handles different variable types more easily. A good explanation of the use of format can be found here.

Upvotes: 4

Related Questions