how to skip over lines of a file if they are empty

11,939

Solution 1

Your problem comes from the fact that empty lines are not None, as you seem to assume. The following is a possible fix:

for line in ifile:
    line = line.strip()
    if not line:  # line is blank
        continue
    if line.startswith("#"):  # comment line
        continue
    data = line.split(',')
    # do stuff with data

Solution 2

Just use a continue statement in combination with if:

if not line or line.startswith('#'):
    continue

This will go to the next iteration (line) in case line is None, empty or starts with #.

Share:
11,939
Kira Shelton
Author by

Kira Shelton

Updated on June 04, 2022

Comments

  • Kira Shelton
    Kira Shelton almost 2 years

    Program in python 3: This is my first program involving files. I need to ignore comment lines (start with #) and blank lines, and then split the lines so they are iterable, but I keep on getting and IndexError message that says string index out of range, and the program crashes on the blank line.

    import os.path
    
    def main():
    
    endofprogram = False
    try:
        #ask user to enter filenames for input file (which would 
        #be animals.txt) and output file (any name entered by user)
        inputfile = input("Enter name of input file: ")
    
        ifile = open(inputfile, "r", encoding="utf-8")
    #If there is not exception, start reading the input file        
    except IOError:
        print("Error opening file - End of program")
        endofprogram = True
    
    else:
        try:     
            #if the filename of output file exists then ask user to 
            #enter filename again. Keep asking until the user enters 
            #a name that does not exist in the directory        
            outputfile = input("Enter name of output file: ")
            while os.path.isfile(outputfile):
                if True:
                    outputfile = input("File Exists. Enter name again: ")        
            ofile = open(outputfile, "w")
    
            #Open input and output files. If exception occurs in opening files in 
            #read or write mode then catch and report exception and 
            #exit the program
        except IOError:
            print("Error opening file - End of program")
            endofprogram = True            
    
    if endofprogram == False:
        for line in ifile:
            #Process the file and write the result to display and to the output file
            line = line.strip()
            if line[0] != "#" and line != None:
                data = line.split(",")
                print(data)                
    ifile.close()
    ofile.close()
    main() # Call the main to execute the solution