簡體   English   中英

如果 Python function 內部出現錯誤,如何“跳過”?

[英]How "skip" if error inside of a Python function?

我正在嘗試從多個頁面導入表格,然后將每個表格 append 導入一個數據框。 其中一個鏈接沒有表格,導致 function 無法工作。 有沒有辦法可以跳過導致錯誤的 URL? (還有更多的 URL 會導致我從這段代碼中排除的錯誤)

import pandas as pd

    
urls = ['https://basketball.realgm.com/player/Stephen-Curry/GameLogs/1600',
            'https://basketball.realgm.com/player/LeBron-James/GameLogs/250', 
            'https://basketball.realgm.com/player/Anthony-Edwards/GameLogs/117444',
            'https://basketball.realgm.com/player/Jalen-Washington/GameLogs/151233']
    
def fxGameLogs(URL: list) -> pd.DataFrame:
    dfs = [] # empty list
    for x in URL:
        GameLog_list = pd.read_html(x)
        GameLogs = GameLog_list[0]
        dfs.append(GameLogs) # append frame to list        
    return pd.concat(dfs).reset_index(drop=True) # concat frames and return

GameLogs = fxGameLogs(urls)
print(GameLogs)

也許你可以使用一個簡單的 if? 或者,也許,在使用您的網站之前使用請求 function 檢查返回的狀態代碼。

檢查一下-> Python 檢查網站是否存在

try塊允許您測試一段代碼的錯誤。
除了塊允許您管理錯誤。

例子:

def division(num1, num2):
    return num1 / num2

division(1, 0)

如果你運行它,你會得到這樣的錯誤>>

Traceback (most recent call last):
  File "<string>", line 4, in <module>
File "<string>", line 2, in division
ZeroDivisionError: division by zero

但是使用try...except塊代碼可以運行沒有任何錯誤

def division(num1, num2):
    return num1 / num2

try:
    division(1, 0)
except:
    pass

最佳做法是使用特定的錯誤異常:

def division(num1, num2):
    return num1 / num2

try:
    division(1, 0)
except ZeroDivisionError:
    pass

你也可以試試這個:

def division(num1, num2):
    return num1 / num2

try:
    division(1, 0)
except Exception as e:
    print(e)

這將打印錯誤或可用於日志記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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