У меня есть служебный скрипт Python, который принимает аргументы в командной строке и выполняет задачи с помощью поискового инструмента с открытым исходным кодом, который называется Elasticsearch.
Но, проще говоря, вот как он сейчас используется:
Myscript.py create indexname http://localhost:9260
Myscript.py create indexname http://localhost:9260 IndexMap.json
Я хотел бы сделать так, чтобы пользователю сценария не приходилось запоминать порядок аргументов сценария. Как я могу включить это в моем скрипте? Я думал о передаче аргументов в стиле Unix. Например:
import os
import sys
import glob
import subprocess
# collect command line arguments
commandline_args = sys.argv
# How to use this simple API:
# create indexname http://localhost:9260 IndexMap.json
command_type = commandline_args[1]
index_name = commandline_args[2]
base_elasticsearch_url = commandline_args[3]
file_to_index = sys.argv[4] if len(sys.argv) > 4 else None
def run_curl(command, url):
cmd = ['curl', command]
url = url.split(' ')
print 'sending command: '
print cmd+url
return subprocess.check_output(cmd+url)
if (command_type == 'delete'):
print 'About to run '+ command_type + ' on Index: ' + index_name
command = '-XDELETE'
composed_url = base_elasticsearch_url + '/' + index_name + '/'
output = run_curl(command, composed_url)
print 'output:'
print output
# create Index # works!
# curl -XPOST 'localhost:9260/icrd_client_1 -d @clientmappings.json
if (command_type == 'create'):
print 'About to run '+command_type+' for Index: '+index_name+' from filename: '+file_to_index
command = '-XPOST'
composed_url = base_elasticsearch_url + '/' + index_name +' -d ' + '@'+file_to_index
output = run_curl(command, composed_url)
print 'output:'
print output
import argparse
было бы хорошим местом для начала. - person rlms   schedule 29.10.2013argparse
требуется версия 2.7 или новее. - person ely   schedule 29.10.2013