-5

関数が数値を返すという問題があります。次に、その番号を含む URL を組み立てようとすると、失敗します。

具体的には、私が得るエラーは

TypeError: 'str' オブジェクトと 'NoneType' オブジェクトを連結できません

ここからどこへ行くべきかわからない。

関連するコードは次のとおりです。

# Get the raw ID number of the current configuration
configurationID = generate_configurationID()

# Update config name at in Cloud
updateConfigLog = open(logBase+'change_config_name_log.xml', 'w')
# Redirect stdout to file
sys.stdout = updateConfigLog
rest.rest(('put', baseURL+'configurations/'+configurationID+'?name=this_is_a_test_', user, token))
sys.stdout = sys.__stdout__

次のように手動で rest.rest() に入力すると、完全に機能します

rest.rest(('put', http://myurl.com/configurations/123456?name=this_is_a_test_, myusername, mypassword))

試してみたところstr(configurationID)、番号が返されましたが、残りのURLを取得できなくなりました...

アイデア?ヘルプ?

わかりました... baseURL と configurationID をここに表示しようとして、私がしたことは次のとおりです。

print 'baseURL: '+baseURL
print 'configurationID: '+configurationID

そして、ここに私が戻ってきたものがあります

it-tone:trunk USER$ ./skynet.py fresh
baseURL: https://myurl.com/
369596
Traceback (most recent call last):
  File "./skynet.py", line 173, in <module>
    main()
  File "./skynet.py", line 30, in main
    fresh()
  File "./skynet.py", line 162, in fresh
    updateConfiguration()
  File "./skynet.py", line 78, in updateConfiguration
    print 'configurationID: '+configurationID
TypeError: cannot concatenate 'str' and 'NoneType' objects
it-tone:trunk USER$ 

私にとって興味深いのは、369596 が構成 ID であるということですが、以前と同様に、その周りで呼び出されたすべてのものを壊しているように見えます。

以下でkindallが指摘したように、私のgenerate_configurationIDは値を返さず、むしろそれを出力していました。

# from generate_configurationID
def generate_configurationID():
  dom = parse(logBase+'provision_template_log.xml')
  name = dom.getElementsByTagName('id')
  p = name[0].firstChild.nodeValue
  print p
  return p
4

1 に答える 1

3

あなたconfigurationIDNoneです。これはgenerate_configurationID()、 が値を返していないことを意味している可能性があります。Python では、変数名がその値を「失う」方法はありません。あなたが投稿したコードで、 forconfigurationIDが beNonegenerate_configurationID()返す唯一の方法は、None明示的に値を返さない場合に起こることです。

「しかし、それconfigurationIDは画面に権利を印刷します!」あなたは反対するかもしれません。確かに、それはおそらくgenerate_configurationID()あなたが正しいことを確認するために印刷しているのに、それを返すのを忘れているところです.

全体を投稿することで、私が間違っていることを証明できるかもしれません。generate_configurationID()あなたのプログラムが魔法であることは認めます。

于 2012-04-23T20:35:47.563 に答える