What steps will reproduce the problem? 1. Make a script containing this code: parser = argparse.ArgumentParser() parser.add_argument('-i', '--input-base-directory', type=argparse.FileType('r'), default='/home') parser.parse_args() 2. Run the script with '-h'. 3. See it complain that '/home' is a directory Detailed explanation: With '-h', we just need to print the help message. We shouldn't fail on a default value that's wrong or else the help message will not get printed and the user will have no idea what the problem is. This is a valid use case as I want to provide a default location, but I can't guarantee that the location works on the user's machine. I end up doing my own checking.
I think http://bugs.python.org/issue12776, which delays type conversions on defaults should solve this problem, right? If you agree, could you add your code here as a test case to that issue and mark this as duplicate? (And yes, I agree this is a bug.)