Python – Get number of characters, words, spaces and lines in a file

29 Dec, 2020
Prerequisite: File Handling in Python
Given a text file fname, the task is to count the total number of characters, words, spaces and lines in the file.
As we know, Python provides multiple in-built features and modules for handling files. Let’s discuss different ways to calculate total number of characters, words, spaces and lines in a file using Python.
Below is the implementation of the above approach.
# Python implementation to compute# number of characters, words, spaces# and lines in a file  # Function to count number # of characters, words, spaces # and lines in a filedef counter(fname):      # variable to store total word count    num_words = 0          # variable to store total line count    num_lines = 0          # variable to store total character count    num_charc = 0          # variable to store total space count    num_spaces = 0          # opening file using with() method    # so that file gets closed     # after completion of work    with open(fname, 'r') as f:                  # loop to iterate file        # line by line        for line in f:                          # incrementing value of             # num_lines with each             # iteration of loop to            # store total line count             num_lines += 1                          # declaring a variable word            # and assigning its value as Y            # because every file is             # supposed to start with             # a word or a character            word = 'Y'                          # loop to iterate every            # line letter by letter            for letter in line:                                  # condition to check                 # that the encountered character                # is not white space and a word                if (letter != ' ' and word == 'Y'):                                          # incrementing the word                    # count by 1                    num_words += 1                                          # assigning value N to                     # variable word because until                    # space will not encounter                    # a word can not be completed                    word = 'N'                                      # condition to check                 # that the encountered character                # is a white space                elif (letter == ' '):                                          # incrementing the space                    # count by 1                    num_spaces += 1                                          # assigning value Y to                    # variable word because after                    # white space a word                    # is supposed to occur                    word = 'Y'                                      # loop to iterate every                 # letter character by                 # character                for i in letter:                                          # condition to check                     # that the encountered character                     # is not  white space and not                    # a newline character                    if(i !=" " and i !="\n"):                                                  # incrementing character                        # count by 1                        num_charc += 1                              # printing total word count     print("Number of words in text file: ", num_words)          # printing total line count    print("Number of lines in text file: ", num_lines)          # printing total character count    print('Number of characters in text file: ', num_charc)          # printing total space count    print('Number of spaces in text file: ', num_spaces)      # Driver Code: if __name__ == '__main__':     fname = 'File1.txt'    try:         counter(fname)     except:         print('File not found')
Output:
Number of words in text file:  25
Number of lines in text file:  4
Number of characters in text file:  91
Number of spaces in text file:  21

 Method #2: Using some built-in functions and OS module functionsIn this approach, the idea is to use the os.linesep() method of OS module to separate the lines on the current platform. When the interpreter’s scanner encounter os.linesep it replaces it with \n character. After that strip() and split() functions will be used to carry out the task.Get more idea about strip() and split() functions.
Below is the implementation of the above approach.
# Python implementation to compute# number of characters, words, spaces# and lines in a file  # importing os moduleimport os  # Function to count number # of characters, words, spaces # and lines in a filedef counter(fname):          # variable to store total word count    num_words = 0          # variable to store total line count    num_lines = 0          # variable to store total character count    num_charc = 0          # variable to store total space count    num_spaces = 0          # opening file using with() method    # so that file gets closed     # after completion of work    with open(fname, 'r') as f:                  # loop to iterate file        # line by line        for line in f:                          # separating a line             # from \n character             # and storing again in line             # variable for further operations            line = line.strip(os.linesep)                          # splitting the line             # to make a list of            # all the words present            # in that line and storing            # that list in            # wordlist variable            wordslist = line.split()                          # incrementing value of             # num_lines with each             # iteration of loop to            # store total line count            num_lines = num_lines + 1                          # incrementing value of             # num_words by the             # number of items in the            # list wordlist            num_words = num_words + len(wordslist)                          # incrementing value of             # num_charc by 1 whenever            # value of variable c is other             # than white space in the separated line            num_charc = num_charc + sum(1 for c in line                           if c not in (os.linesep, ' '))                          # incrementing value of             # num_spaces by 1 whenever            # value of variable s is             # white space in the separated line            num_spaces = num_spaces + sum(1 for s in line                                 if s in (os.linesep, ' '))          # printing total word count    print("Number of words in text file: ", num_words)          # printing total line count    print("Number of lines in text file: ", num_lines)          # printing total character count    print("Number of characters in text file: ", num_charc)          # printing total space count    print("Number of spaces in text file: ", num_spaces)  # Driver Code: if __name__ == '__main__':     fname = 'File1.txt'    try:         counter(fname)     except:         print('File not found')
Output:
Number of words in text file:  25
Number of lines in text file:  4
Number of characters in text file:  91
Number of spaces in text file:  21

nidhi_biet
Python file-handling-programs
Python os-module-programs
python-file-handling
python-os-module
Python
Python Programs
Write From Home
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.