Python Etiquette for Functions in Multiple Files
Putting all of your code into a single file is bad.  As a very VERY loose rule of thumb I try to avoid having any source file be more than a thousand lines of code, but the real rule to follow is that code should be broken up into modules that have coherent and comprehensible purposes, and those modules should live in their own files.  

The origin of rules of thumb like "no file longer than a thousand lines" is that if a file is really long, it's no longer comprehensible by a normal human brain, and so you need to think about how to break your logic down into smaller and more mentally-digestible pieces.  A function (or group of interrelated functions) that is long but is self-contained and doesn't interact with anything else would make a lot of sense to have in its own file/module.

I'd probably do my argument parsing right in the main function unless the arg parsing was so complex that it felt like it needed to be its own module.