David> I realize CSV module has a sniffer but it is something that is David> limited more or less to delimited files.
Sure. How about: def sniff(fname): if open(fname).read(4) == "<xml": return "xml" else: # assume csv - use its sniffer to generate a dialect return d Of course, as the number of file formats grows, you'll need to expand the logic. You can also run the file(1) command and see what it says. I seem to recall someone asking about the equivalent to file(1) implemented in Python awhile back. -- Skip Montanaro Katrina Benefit Concerts: http://www.musi-cal.com/katrina [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list