sqlmapproject/sqlmap · error · SqlmapSyntaxException
postprocess script ' ' should have an extension '.py
Error message
postprocess script '%s' should have an extension '.py'
What it means
After passing the existence check, each --postprocess script must end with the '.py' extension so sqlmap can strip it to derive the importable module name (filename[:-3]). This is a format guard: a non-.py path raises SqlmapSyntaxException even if the file exists and contains valid Python.
Solutions
- Rename the script so it ends with '.py' (e.g. `mv myscript myscript.py`).
- Point --postprocess at the .py file rather than a wrapper, executable, or directory.
- Keep the basename a valid Python module identifier (no spaces or dashes) so the import step also succeeds.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at lib/core/option.py:1076 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of sqlmapproject/sqlmap@0a35b20e39 (2026-08-26).
Data as JSON: /api/errors/e709adf725a81110.
Report an issue: GitHub.
Appendix: source
Thrown at lib/core/option.py:1076
if conf.postprocess:
for script in re.split(PARAMETER_SPLITTING_REGEX, conf.postprocess):
found = False
function = None
script = safeFilepathEncode(script.strip())
try:
if not script:
continue
if not os.path.exists(script):
errMsg = "postprocess script '%s' does not exist" % script
raise SqlmapFilePathException(errMsg)
elif not script.endswith(".py"):
errMsg = "postprocess script '%s' should have an extension '.py'" % script
raise SqlmapSyntaxException(errMsg)
except UnicodeDecodeError:
errMsg = "invalid character provided in option '--postprocess'"
raise SqlmapSyntaxException(errMsg)
dirname, filename = os.path.split(script)
dirname = os.path.abspath(dirname)
infoMsg = "loading postprocess module '%s'" % filename[:-3]
logger.info(infoMsg)
if not os.path.exists(os.path.join(dirname, "__init__.py")):
errMsg = "make sure that there is an empty file '__init__.py' "
errMsg += "inside of postprocess scripts directory '%s'" % dirname
raise SqlmapGenericException(errMsg)
if dirname not in sys.path:
sys.path.insert(0, dirname)
View on GitHub (pinned to 0a35b20e39)