Ben iyi çalışırpython istekleri üstbilgileri bir değişken olarak mı saklıyor?
headers = {'content-type': 'application/soap+xml'}
var. sağlayan benim args yüzden bir argüman olarak belirtilmesi bu mümkün istiyorum ancak bunu ancak zaman ... Bu
{'content-type': 'application/soap+xml'}
olarak ince yoluyla geliyor ben
--wsheaders {'content-type':\s'application/soap+xml'}
söylüyorlar
headers = args.wsheaders
Tonlarca hata alıyorum. Açıkçası başlıklar bir dizi olamaz. Fakat bunu bir değişkende tekrar okunabileceği bir yerde saklamanın bir yolu olmalı? Herhangi bir fikir?
DÜZENLEME: Bağımsız değişkenin çevresindeki tek tırnakları kullanamıyorum. Bunu hala öğreniyorum ama argümanları bir dosyadan aktarırken bir argümanın etrafında tek veya çift tırnak kullanmıyorum gibi görünebilir, ama chars'ı birlikte gruplamak için işe yaramıyor, bunun yerine literal bir parça oluyor. Bir boşluktan önce veya sonra her şeyi kaybettiğimden beri yardımcı olmayan argümanın. Dosyada neye benzediğine ilişkin eke bakın.
--wsheaders '{'content-type': 'application/soap+xml'}'
hata
tek tırnak veya çift tırnak bunun yerine ben--wsheaders {'content-type':\s'application/soap+xml'}
kullanmak
Sync03.py: error: unrecognized arguments: 'application/soap+xml'}'
Sync03.py: error: unrecognized arguments: 'application/soap+xml'}"
ama sonra \ s ihtiyaçlarını kullanarak arg sonra değiştirilecek Benim yaptığım girilir, ama sonra değişken bir dizedir ve ben ordayım. bir problem. o tanınmayan bir json beri bir \ s varken
type=json.loads
argüman tanımında çalışmaz. \\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\}. Bir \ s
Sync03.py: error: argument --wsheaders: invalid loads value: "{'content-type':"
Sync03.py: error: argument --wsheaders: invalid loads value: "{'content-type':\\s'application/soap+xml'}"
EDIT'e
parser.add_argument('--wsheaders', type=lambda x: json.loads(x.replace('\s', '').replace('\'', '"')))
ile daha sonra bir yeri olan bu doğrudan aşağıda bschlueter açıklama gereği çalıştı.
the_script --wsheaders '{"content-type": "application/soap+xml"}'
Sonra, json olarak ayrıştırmak:
En azından, kodunuzdaki hataları yazabilirsiniz. – bschlueter
''{' content-type ':' application/soap + xml '}'' çalışmıyor çünkü iç '' 'daha önceki olanlarla eşleşiyor. Bunun geçerli bir dize olması için içlerinden kaçmanız gerekir. '' {\ 'content-type \': \ 'application/soap + xml \'} ''tek, geçerli bir dizge yapardı, ancak json geçerli değil, çünkü json çift tırnak gerektirir. ''{" content-type ":" application/soap + xml "}'', aynı verinin geçerli json gösterimidir. – bschlueter
Kesinlikle * \ s * 'yi argparse ile değiştirebilirsiniz, sadece girdiyi düzelten bir özel tip kullanın: 'parser.add_argument (' - wsheaders ', type = lambda x: json.loads (x.replace (' \ s) ',' ') .replace (' \ '', '"'))) – bschlueter