Try to be a bit more consistent on all platforms:
  python .
  python < .

both print a message, return non-zero and do not core dump.
diff --git a/Modules/main.c b/Modules/main.c
index f6fa48b..8e7c50b 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -364,7 +364,8 @@
 				struct stat sb;
 				if (fstat(fileno(fp), &sb) == 0 &&
 				    S_ISDIR(sb.st_mode)) {
-					fprintf(stderr, "%s: warning '%s' is a directory\n", argv[0], filename);
+					fprintf(stderr, "%s: '%s' is a directory, cannot continue\n", argv[0], filename);
+					return 1;
 				}
 			}
 		}