[英]AttributeError: 'NoneType' object has no attribute 'text' - python
[英]Python: AttributeError: 'NoneType' object has no attribute 'text'
我正在使用python腳本每天運行以備份來自網絡設備的配置 - Palo Alto防火牆。 我正在使用API功能登錄設備。 由於某些字符未被解碼,我收到錯誤
AttributeError: 'NoneType' object has no attribute 'text'
所以,這是拋出錯誤的代碼的一部分:
r = requests.get('https://%s/api/?type=keygen&user=admin&password=password' %host, verify=False)
密碼包含特殊字符,如“+”,“@”。 我已經檢查了Paloalto的kb文章,當我們手動輸入HTTPS URL時,他們有一個解決方案:( https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000CliMCAS )。
他們建議:
例如,如果密碼包含特殊字符,例如“#”和“&”,則分別使用URL編碼%23和%26。
這在我手動輸入密碼時有效。 但是在get請求中傳遞參數時,如何將其傳遞給解碼值為'+'(解碼值為%2B)?
所以說密碼是p @ ssword +,我們在get request api url的代碼中輸入的密碼將是https://192.168.10.1/api/?type=keygen&user=admin&password=p%40ssword%2B
這將給出:
TypeError: not enough arguments for format string
所以說密碼是p @ ssword +,我們在get request api url的代碼中輸入的密碼將是https://192.168.10.1/api/?type=keygen&user=admin&password=p%40ssword%2B
如果直接將其用作get
函數的參數,則%40s
和%2B
將被視為字符串格式說明符 。
'%'
字符,標記說明符的開頭。
你必須用另一個%
轉義%
字符:
'%'
沒有轉換參數,導致結果中出現'%'字符。
嘗試這個:
url_fmt = "https://%s/api/?type=keygen&user=admin&password=p%%40ssword%%2B"
host = "api"
print(url_fmt % host)
# https://api/api/?type=keygen&user=admin&password=p%40ssword%2B
使用.format
函數。
"https://{}/api/?type=keygen&user=admin&password=password".format(host)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.