2015-02-01 3 views
0

У меня нет большого опыта работы с сценариями shell или python, поэтому я ищу некоторую помощь в том, как я могу это сделать.Передача аргументов в файл сценария оболочки cURL

Цель:

передать аргументы файл сценария оболочки или питона, который будет использоваться для выполнения либо запроса Curl Post или запроса на питон пост.

Скажем, я иду маршрут питона и имя файла api.py

import json,httplib 
connection = httplib.HTTPSConnection('api.example.com', 443) 
connection.connect() 
connection.request('POST', '/message', json.dumps({ 
     "where": { 
     "devicePlatform": "andriod" 
     }, 
     "data": { 
     "body": "Test message!", 
     "subject": "Test subject" 
     } 
    }), { 
     "X-Application-Id": "XXXXXXXXX", 
     "X-API-Key": "XXXXXXXX", 
     "Content-Type": "application/json" 
    }) 
result = json.loads(connection.getresponse().read()) 
print result 

Как бы идти о передаче в качестве аргументов для тела и предметных ценностей и как бы это выглядело с помощью командной строки?

Благодаря

+0

Ну, еще на секунду: как вы бы захватили аргументы командной строки скрипту Python? –

ответ

1

Попробуйте использовать argparse для разбора аргументов командной строки

from argparse import ArgumentParser 
import json 

import httplib 

parser = ArgumentParser() 
parser.add_argument("-s", "--subject", help="Subject data", required=True) 
parser.add_argument("-b", "--body", help="Body data", required=True) 
args = parser.parse_args() 
connection = httplib.HTTPSConnection('api.example.com', 443) 
connection.connect() 
connection.request('POST', '/message', json.dumps({ 
     "where": { 
     "devicePlatform": "andriod" 
     }, 
     "data": { 
     "body": args.body, 
     "subject": args.subject, 
     } 
... 

На CLI это будет выглядеть

python script.py -b "Body" -s "Subject" 
+0

Хорошо, это имеет смысл. Завтра я сделаю снимок, и если у меня возникнут другие вопросы, я отправлю здесь еще один комментарий. Спасибо за помощь. – jimrice

+0

Это отлично работало. Как бы вы приблизились к сценарию завитки. Я предполагаю, что он будет похож на curl script.sh | bash и аргументы здесь, но как они будут выглядеть в реальном скрипте? Я предполагаю, что они отличаются от приведенного выше аргумента parser. – jimrice

+0

Не думаю, что я понимаю вопрос. Вы спрашиваете, как бы вы реплицировали все функции curl в скрипте python? – Greg

0

Используйте argparse. Пример с темой:

import json,httplib 
import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument('subject', help='string containing the subject') 
args = parser.parse_args() 

connection = httplib.HTTPSConnection('api.example.com', 443) 
connection.connect() 
connection.request('POST', '/message', json.dumps({ 
     "where": { 
     "devicePlatform": "andriod" 
     }, 
     "data": { 
     "body": "Test message!", 
     "subject": args.subject 
     } 
    }), { 
     "X-Application-Id": "XXXXXXXXX", 
     "X-API-Key": "XXXXXXXX", 
     "Content-Type": "application/json" 
    }) 
result = json.loads(connection.getresponse().read()) 
print result 
Смежные вопросы