fileinput module not yielding expected results

Dan Sommers 2QdxY4RzWzUUiLuE at potatochowder.com
Sat Sep 7 11:33:46 EDT 2019


On 9/7/19 11:12 AM, Jason Friedman wrote:

> $ grep "File number" ~/result | sort | uniq
> File number: 3
> 
> I expected that last grep to yield:
> File number: 1
> File number: 2
> File number: 3
> File number: 4
> File number: 5
> File number: 6

As per https://docs.python.org/3/library/fileinput.html#fileinput.fileno,
fileno is the underlying file descriptor of the file, and not at
all what you're looking for.

> My ultimate goal is as follows. I have multiple CSV files, each with the
> same header line. I want to read the header line from the first file and
> ignore it for subsequent files.

If you're certain that the headers are the same in each file,
then there's no harm and much simplicity in reading them each
time they come up.

     with fileinput ...:
         for line in f:
             if fileinput.isfirstline():
                 headers = extract_headers(line)
             else:
                 pass # process a non-header line here

Yes, the program will take slightly longer to run.  No, you won't
notice it.



More information about the Python-list mailing list