Python 如何有条件跳过不带';是否在pd.read_html()中不包含表?

Python 如何有条件跳过不带';是否在pd.read_html()中不包含表?,python,pandas,try-except,Python,Pandas,Try Except,我想在本地计算机上迭代多个目录,每个目录都包含一个HTML文件。我将每个文件的路径存储在一个列表变量中,但现在我想迭代每个文件,并将其读入类似于pd.read\u html的内容,以便从html文件中提取表信息。但是,某些文件不包含任何表,因此抛出错误ValueError:No tables found。这个错误当然是意料之中的,我只需要跳过这些错误所需的逻辑方面的帮助 我已经试着阅读了pd.DataFrame(此处:)和pd.read\u html(此处:)文档,但我找不到我想要的逻辑 这就是

我想在本地计算机上迭代多个目录,每个目录都包含一个HTML文件。我将每个文件的路径存储在一个列表变量中,但现在我想迭代每个文件,并将其读入类似于
pd.read\u html
的内容,以便从html文件中提取表信息。但是,某些文件不包含任何表,因此抛出错误
ValueError:No tables found
。这个错误当然是意料之中的,我只需要跳过这些错误所需的逻辑方面的帮助

我已经试着阅读了
pd.DataFrame
(此处:)和
pd.read\u html
(此处:)文档,但我找不到我想要的逻辑

这就是我到目前为止所做的

# initialize the path
p = Path('C:/path/to/directories/')

# glob all html file paths into list of paths
html_paths = [file for file in p.glob('**/*.html')]
现在我有了一个路径列表,我想迭代并读入
pd.read\u html
。我可以使用以下代码轻松完成此操作:

# initialize empty data frame to append pd.read_html() output to
html_files = pd.DataFrame()

# iterate over each file and read in using pandas
for p in html_paths:
     html_files.append(pd.read_html(str(p)))
但是,因为我的一些html文件不包含任何表,所以当for循环迭代这些文件时,会出现错误。我想找到一种方法,在读取这些文件时跳过这些没有表格的文件,这样它就可以继续追加其余的文件,而不是破坏代码。

您只需简单地执行即可

for p in html_paths:
     try:
         html_files = html_files.append(pd.read_html(str(p)))
     except ValueError:
         pass

好吧,太棒了!这看起来像是我要找的。然而,当我运行这个循环时,我会得到一个空的数据帧吗?我希望这些文件的大部分都能通过。这是因为循环中的每次迭代都会覆盖最后一次吗?@NathanCahn:Close。这是因为
append
只返回一个新的
DataFrame
;它实际上并不修改
html\u文件本身。我已经相应地更新了答案。您可能会发现,通过首先将所有单个数据帧收集到一个列表中,然后在最后将它们与单个
pd.concat
组合,性能会有所提高。啊,好的,我明白了。一切都好!非常感谢你的帮助!