def safe_join(directory, filename):
    """Safely join `directory` and `filename`.
    Example usage::
    @app.route('/wiki/<path:filename>')
    def wiki_page(filename):
    filename = safe_join(app.config['WIKI_FOLDER'], filename)
    with open(filename, 'rb') as fd:
    content = fd.read() 
    :param directory: the base directory.
    :param filename: the untrusted filename relative to that directory.
    :raises: :class:`~werkzeug.exceptions.NotFound` if the resulting path
    would fall out of `directory`.
    """
filename = posixpath.normpath(filename)
for sep in _os_alt_seps:
    if sep in filename:
        raise NotFound()
if os.path.isabs(filename) or filename.startswith('../'):
    raise NotFound()
return os.path.join(directory, filename)
Validate a filename in python