What would be the most conservative way to check if a file-name is valid in Python on all platforms (including mobile platforms like Android, iOS)?
Ex.
this_is_valid_name.jpg -> Valid
**adad.jpg -> Invalid
a/ad -> Invalid
Illegal Filename CharactersDon't start or end your filename with a space, period, hyphen, or underline. Keep your filenames to a reasonable length and be sure they are under 31 characters. Most operating systems are case sensitive; always use lowercase. Avoid using spaces and underscores; use a hyphen instead.
Supported characters for a file name are letters, numbers, spaces, and ( ) _ - , . *Please note file names should be limited to 100 characters. Characters that are NOT supported include, but are not limited to: @ $ % & \ / : * ? " ' < > | ~ ` # ^ + = { } [ ] ; !
'FileName is not valid': while creating and saving, or opening an Excel file such error may mean one of the following reason: Path of file including file name may exceed 218 number of characters limit. The file name may be incorrect. The path may not be appropriate.
The most harsh way to check if a file would be a valid filename on you target OSes is to check it against a list of properly tested filenames.
valid = myfilename in ['this_is_valid_name.jpg']
Expanding on that, you could define a set of characters that you know are allowed in filenames on every platform :
valid = set(valid_char_sequence).issuperset(myfilename)
But this is not going to be enough, as some OSes have reserved filenames.
You need to either exclude reserved names or create an expression (regexp) matching the OS allowed filename domain, and test your filename against that, for each target platform.
AFAIK, Python does not offer such helpers, because it's Easier to Ask Forgiveness than Permission. There's a lot of different possible combinations of OSes/filesystems, it's easier to react appropriately when the os raises an exception than to check for a safe filename domain for all of them.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With