Implement custom separators via argparse

This commit is contained in:
Kjistóf 2017-05-28 19:33:53 +02:00 committed by Kristóf Tóth
parent 605a7cc5bf
commit 0da93de25a
1 changed files with 14 additions and 8 deletions

View File

@ -1,18 +1,24 @@
#!/usr/bin/env python3
from sys import argv
from unidecode import unidecode
from os import rename
from os.path import basename, dirname
from os.path import join as joinpath
from argparse import ArgumentParser
parser = ArgumentParser(description='Eliminate funky stuff from filenames.')
parser.add_argument('--separator', '-s', type=str, nargs='?', default='_',
help='Set separator to use (to replace spaces with).')
parser.add_argument('files', type=str, nargs='+',
help='File(s) to normalise the name of (relative or absolute path).')
args = parser.parse_args()
# whitespaces will be replaced
# dots are ok
# do not ruin previous work
# dashes are ok
whitelist = (' ', '.', '_', '-')
# special characters that will not be removed
whitelist = {' ', '.', '-'}
whitelist.add(args.separator)
for path in argv[1:]:
for path in args.files:
dir = dirname(path)
file = basename(path)
rename(path,
@ -21,7 +27,7 @@ for path in argv[1:]:
joinpath
(
dir,
''.join(ch for ch in file.replace(' ', '_')
''.join(ch for ch in file.replace(' ', args.separator)
if ch.isalnum()
or ch in whitelist)
)