Python 函数异常处理:如何解决自定义函数执行正常但调用后只输出一条消息的问题?

ID:20132 / 打印

python 函数异常处理:如何解决自定义函数执行正常但调用后只输出一条消息的问题?

python 自定义函数处理异常

在python 中定义函数时,除了返回预期结果外,有时还会遇见函数内部执行正常,而调用函数时却只输出一条讯息的情况。究其原因,通常是函数没有正确处理异常导致的。

以下是原始程式码:

def start_url(url):     nianducontent = requests.get(url).text #獲取網頁源碼     nian = re.findall('<option value=".*?".*?>(.*?)</option>', nianducontent, re.s) #獲取年份     for n in nian:         if '"季度"' not in n and '-' not in n: #過濾年份中包含'季度'和'-'的             jidu = range(1, 5) #1~4 四個季度             for j in jidu:                 # for urls in url:                 urls = url + str(n) + '&season=' + str(j) #拼接url                 print(urls)     return urls  url = 'http://quotes.****.***.com/trade/lsjysj_******.html?year=' s = start_url(url) print(s) 

函数内部遍历年份程式码通常会输出一系列网址,但调用函数时却仅输出:

立即学习“Python免费学习笔记(深入)”;

http://quotes.****.***.com/trade/lsjysj_******.html?year=1999&season=1

调整程式码如下修正该问题:

def start_url(url):     try:         nianduContent = requests.get(url).text #獲取網頁源碼         nian = re.findall('<option value=".*?".*?>(.*?)</option>', nianduContent, re.S) #獲取年份          urls = list()         for n in nian:             if '"季度"' not in n and '-' not in n: #過濾年份中包含'季度'和'-'的                 jidu = range(1, 5) #1~4 四個季度                 for j in jidu:                     # for urls in url:                     tempurl = url + str(n) + '&season=' + str(j) #拼接url                     urls.append(tempurl)         return urls     except Exception as e:         print("發生異常:", e)  url = 'http://quotes.*****.***.com/trade/lsjysj_******.html?year=' s = start_url(url) print(s)

通过新增异常处理机制,当函数执行过程中出现异常时,会被捕获并输出,从而方便调试问题。

上一篇: 为什么在 Python 代码中,`print(list(g))` 后无法再执行 `print(i)`?
下一篇: 如何定制化处理CrawlSpider中Rule解析过的链接?

作者:admin @ 24资源网   2025-01-14

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。