pathvalidate is a Python library to sanitize/validate a string such as filenames/file-paths/etc.
Project description
Summary
pathvalidate is a Python library to sanitize/validate a string such as filenames/file-paths/etc.
Features
- Sanitize/Validate a string as a:
file name
file path
validafilename/filepath validator for argparse/click
Multibyte character support
Examples
Sanitize a filename
- Sample Code:
from pathvalidate import sanitize_filename fname = "fi:l*e/p\"a?t>h|.t<xt" print("{} -> {}".format(fname, sanitize_filename(fname))) fname = "\0_a*b:c<d>e%f/(g)h+i_0.txt" print("{} -> {}".format(fname, sanitize_filename(fname)))
- Output:
fi:l*e/p"a?t>h|.t<xt -> filepath.txt _a*b:c<d>e%f/(g)h+i_0.txt -> _abcde%f(g)h+i_0.txt
Sanitize a filepath
- Sample Code:
from pathvalidate import sanitize_filepath fpath = "fi:l*e/p\"a?t>h|.t<xt" print("{} -> {}".format(fpath, sanitize_filepath(fpath))) fpath = "\0_a*b:c<d>e%f/(g)h+i_0.txt" print("{} -> {}".format(fpath, sanitize_filepath(fpath)))
- Output:
fi:l*e/p"a?t>h|.t<xt -> file/path.txt _a*b:c<d>e%f/(g)h+i_0.txt -> _abcde%f/(g)h+i_0.txt
Validate a filename
- Sample Code:
import sys from pathvalidate import ValidationError, validate_filename try: validate_filename("fi:l*e/p\"a?t>h|.t<xt") except ValidationError as e: print("{}\n".format(e), file=sys.stderr) try: validate_filename("COM1") except ValidationError as e: print("{}\n".format(e), file=sys.stderr)
- Output:
invalid char found: invalids=(':', '*', '/', '"', '?', '>', '|', '<'), value='fi:l*e/p"a?t>h|.t<xt', reason=INVALID_CHARACTER, target-platform=Windows 'COM1' is a reserved name, reason=RESERVED_NAME, target-platform=universal
Check a filename
- Sample Code:
from pathvalidate import is_valid_filename, sanitize_filename fname = "fi:l*e/p\"a?t>h|.t<xt" print("is_valid_filename('{}') return {}".format(fname, is_valid_filename(fname))) sanitized_fname = sanitize_filename(fname) print("is_valid_filename('{}') return {}".format(sanitized_fname, is_valid_filename(sanitized_fname)))
- Output:
is_valid_filename('fi:l*e/p"a?t>h|.t<xt') return False is_valid_filename('filepath.txt') return True
filename/filepath validator for argparse
- Sample Code:
from argparse import ArgumentParser from pathvalidate.argparse import filepath, filename parser = ArgumentParser() parser.add_argument("--filepath", type=filepath) parser.add_argument("--filename", type=filename)
- Output:
$ ./examples/argparse_validate.py --filepath e?g usage: argparse_validate.py [-h] [--filepath FILEPATH] [--filename FILENAME] argparse_validate.py: error: argument --filepath: invalid char found: invalids=('?'), value='e?g', reason=INVALID_CHARACTER, target-platform=Windows
filename/filepath validator for click
- Sample Code:
import click from pathvalidate.click import filename, filepath @click.command() @click.option("--filename", callback=filename) @click.option("--filepath", callback=filepath) def cli(filename, filepath): click.echo(filename, filepath) if __name__ == "__main__": cli()
- Output:
$ ./examples/click_validate.py --filepath e?g Usage: click_validate.py [OPTIONS] Error: Invalid value for "--filepath": invalid char found: invalids=('?'), value='e?g', reason=INVALID_CHARACTER, target-platform=Windows
For more information
More examples can be found at https://pathvalidate.rtfd.io/en/latest/pages/examples/index.html
Installation
Install from PyPI
pip install pathvalidate
Install from PPA (for Ubuntu)
sudo add-apt-repository ppa:thombashi/ppa sudo apt update sudo apt install python3-pathvalidate
Dependencies
Python 3.5+ No external dependencies.
Test dependencies
Documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pathvalidate-1.0.0.tar.gz
(20.8 kB
view hashes)
Built Distribution
Close
Hashes for pathvalidate-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40da73ded2e2c7a68567bb03efe27f86ef0661e69ad9db992c166d1a4b25a436 |
|
MD5 | 3291876c5aaa39a6e343163d8b426238 |
|
BLAKE2b-256 | e0b335c08eec9d4c27cef905d1f49e864ba852ff87f3959f9ac7eb717a2a1cb6 |