J'écris un programme récursif en utilisant argparse. Le seul argument requis est un fichier (ou des fichiers) sur lequel agir. Quand je l'appelle récursivement, je n'ai pas besoin des noms de fichiers (comme je vais appeler un nouveau répertoire), mais j'ai besoin des options. le problème est que argparse permet à la fois python programname.py -options arg FILENAME FILENAME
et python programname.py FILENAME FILENAME -options arg
. Je pourrais minutieusement chercher un '-' et le résoudre avec une tonne de déclarations if, mais je pense qu'il devrait y avoir un meilleur moyen.récursivité avec python argparse
pas sûr que ça compte, mais voici mes déclarations argparse:
parser = argparse.ArgumentParser(description='Personal upload script. (defaults to ' + user + '@' + server + directory + ')')
parser.add_argument('files', nargs="+", help='file(s) to upload')
parser.add_argument('-s', metavar='example.com', default=server, help='server to upload to')
parser.add_argument('-u', metavar='username', default=user, help='ftp username')
parser.add_argument('-p', metavar='password', default=password, help='ftp password')
parser.add_argument('-d', metavar='example/', default=directory, help='directory to place file in')
parser.add_argument('-n', metavar='myfile.txt', help='name to save file as')
parser.add_argument('-c', metavar='###', help='chmod upload')
parser.add_argument('-l', action='store_true', help='print out new url(s)')
parser.add_argument('-r', action='store_true', help='recursive')
parser.add_argument('-F', action='store_true', help='force (overwrite files/create non-existing dirs)')
parser.add_argument('-v', action='store_true', help='verbose')
args = parser.parse_args()
merci beaucoup!