hmm, I'd not interleave output format and output destination in this way.

also, you can use the optparse store_const trick if you like,

parser.add_option('-j', '--json', dest='output_format', const='json', action='store_const')
parser.add_option('-p', '--pickle', dest='output_format', const='pickle', ...)

then just have an output file option "-o", and pick your format based on self.options.output_format?