I am writing some Python code that loops through a number of files and processes the first few hundred lines of each file. I would like to extend this code so that if any of the files in the list are compressed, it will automatically decompress while reading them, so that my code always receives the decompressed lines. Essentially my code currently looks like:
for f in files:
handle = open(f)
process_file_contents(handle)
Is there any function that can replace open in the above code so that if f is either plain text or gzip-compressed text (or bzip2, etc.), the function will always return a file handle to the decompressed contents of the file? (No seeking required, just sequential access.)
gzip.open. I'm essentially asking if there's a function that looks at the file and automatically choosesopen,gzip.open, or whatever other open function is appropriate for the compression being used, so I don't have to write a bunch of try/catch statements to try every possible open function myself.