簡體   English   中英

Python:AttributeError:'NoneType'對象沒有屬性'text'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM