gpt4 book ai didi

python - 使用请求时的Python错误处理

转载 作者:行者123 更新时间:2023-12-03 08:25:13 27 4
gpt4 key购买 nike

我在下面编写了脚本,以便能够连接到远程服务器并从XML文件中获取一些数据。我添加了一些错误处理功能,以能够跳过某些设备的问题。由于某种原因,无论何时脚本返回一条401消息,它都会中断整个循环,并且我收到消息“无法正确读取csv文件”。我尝试了其他方法来处理异常,但在其他时候它会失败。有关如何正确处理此问题的任何信息?

#!/usr/bin/python

import sys, re, csv, xmltodict
import requests, logging
from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

def version(ip, username, password):
baseUrl = "https://" + ip
session = requests.Session()
session.verify = False
session.timeout = 45

print "Connecting to " + ip
try:
r = session.get(baseUrl + '/getxml?location=/Status', auth=(username, password))
r.raise_for_status()
except Exception as error:
print err

doc = xmltodict.parse(r.text)

version = str(doc['Status']['@version'])

def main():
try:
with open('list.csv', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
version(row['ip'], row['Username'], row['Password'])
except Exception as error:
print ValueError("Could not properly read the csv file \r")
sys.exit(0)

if __name__ == "__main__":
main()

最佳答案

doc中的versiondef version变量不在try: catch:内,因此当r由于异常而成为None时,接下来的2个操作也将失败,从而引发一些未捕获的异常。哪些在main中出现。您可以尝试在doc中包括versiontry: catch:并查看其是否有效。

相关建议:捕获特定的异常,因为这有助于更多地了解代码为何崩溃。例如Response.raise_for_status()引发requests.exceptions.HTTPError。捕获这一点,提出所有其他异常(exception)。 xml可能会引发其他问题,而不是全部捕获。

关于python - 使用请求时的Python错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44124306/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com