![](/img/trans.png)
[英]Python - TypeError: object of type 'NoneType' has no len()
[英]TypeError: object of type 'NoneType' has no len() Python on application deployment
我只是在學習 python,我正在嘗試運行我的應用程序,但得到以下信息:
Traceback (most recent call last):
File "/Users/plugins/bluegreen.py", line 433, in <module>
cnames = [bluegreen.get_cname(green), bluegreen.get_cname(blue)]
File "/Users/plugins/bluegreen.py", line 66, in get_cname
if len(data.get("cname")) == 0:
TypeError: object of type 'NoneType' has no len()
以下是第 66 行和第 433 行的內容:
66:
def get_cname(self, app):
response = self.get("/apps/{}".format(app))
data = json.loads(response.read())
if len(data.get("cname")) == 0:
return None
return data.get("cname")
433:
cnames = [bluegreen.get_cname(green), bluegreen.get_cname(blue)]
編輯1:
如果我放置打印(數據),我會得到以下信息:
{u'entrypoints': [], u'routeropts': {}, u'description': u'', u'repository': u'git@10.10.1.1.nip.io:hello-green.git', u'tags': [], u'lock': {u'Owner': u'', u'Reason': u'', u'AcquireDate': u'0001-01-01T00:00:00Z', u'Locked': False}, u'routers': [{u'type': u'traefik', u'name': u'traefik', u'opts': {}, u'address': u'hello-green.10.10.1.1.nip.io'}], u'deploys': 0, u'routingsettings': None, u'teams': [u'admin'], u'platform': u'go', u'teamowner': u'admin', u'plan': {u'router': u'traefik', u'swap': 0, u'cpushare': 100, u'name': u'autogenerated', u'memory': 0}, u'ip': u'hello-green.10.10.1.1.nip.io', u'owner': u'admin@shipa.io', u'router': u'traefik', u'units': [], u'pool': u'gce', u'name': u'hello-green'}
Traceback (most recent call last):
File "/Users/brunoandrade/.shipa/plugins/bluegreen.py", line 434, in <module>
cnames = [bluegreen.get_cname(green), bluegreen.get_cname(blue)]
File "/Users/brunoandrade/.shipa/plugins/bluegreen.py", line 67, in get_cname
if len(data.get("cname")) == 0:
TypeError: object of type 'NoneType' has no len()
編輯2:
不知道為什么我沒有得到 cname 鍵,因為我在這里得到它:
config = Config.load('shipa-bluegreen.ini')
app_name = config['name']
blue = "%s-blue" % app_name
green = "%s-green" % app_name
bluegreen = BlueGreen(token, target, config)
apps = [blue, green]
cnames = [bluegreen.get_cname(green), bluegreen.get_cname(blue)]
這是從我在文件中的shipa-bluegreen.ini 中讀取的:
[Application]
name: hello
任何幫助將非常感激
謝謝!
你打印出數據,然后得到
{u'entrypoints': [], u'routeropts': {}, u'description': u'', u'repository': u'git@10.10.1.1.nip.io:hello-green.git', u'tags': [], u'lock': {u'Owner': u'', u'Reason': u'', u'AcquireDate': u'0001-01-01T00:00:00Z', u'Locked': False}, u'routers': [{u'type': u'traefik', u'name': u'traefik', u'opts': {}, u'address': u'hello-green.10.10.1.1.nip.io'}], u'deploys': 0, u'routingsettings': None, u'teams': [u'admin'], u'platform': u'go', u'teamowner': u'admin', u'plan': {u'router': u'traefik', u'swap': 0, u'cpushare': 100, u'name': u'autogenerated', u'memory': 0}, u'ip': u'hello-green.10.10.1.1.nip.io', u'owner': u'admin@shipa.io', u'router': u'traefik', u'units': [], u'pool': u'gce', u'name': u'hello-green'}
您可以清楚地看到這里沒有名為“cname”的鍵。
data
沒有cname
鍵。 如果未找到鍵,則data.get("cname")
返回None
但您可以指定顯式默認值。 改為使用空字符串作為默認值。
def get_cname(self, app):
response = self.get("/apps/{}".format(app))
data = json.loads(response.read())
if len(data.get("cname", "")) == 0:
return None
return data.get("cname")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.