我正在使用 argparse 编写递归程序。唯一需要的参数是要操作的文件(或多个文件)。当我递归调用它时,我不需要文件名(因为我将调用一个新目录),但我需要选项。问题是 argparse 允许python programname.py -options arg FILENAME FILENAME
和python programname.py FILENAME FILENAME -options arg
。我可以煞费苦心地寻找一个 '-' 并用大量的 if 语句来解决它,但我觉得应该有更好的方法。
不确定这是否重要,但这是我的 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()
非常感谢!