Webbrowser() 读取 URLS 的文本文件

Webbrowser() reading through a text file for URLS

我正在尝试编写一个脚本来自动浏览我最常访问的网站。我已将网站放入列表中,并尝试使用 Python 中的 webbrowser() 模块打开它。我的代码目前如下所示:

import webbrowser                                                                                
f = open("URLs", "r")
list = f.readline()
for line in list:
    webbrowser.open_new_tab(list)

这只会从我的文件 "URLs" 中读取第一行并在浏览器中打开它。任何人都可以帮助我了解如何实现阅读整个文件并在不同的选项卡中打开 URL 吗?

还有其他可以帮助我实现相同目标的选项。

你有两个主要问题。

您遇到的第一个问题是您使用的是 readline 而不是 readlinesreadline 会给出文件的第一行,而 readlines 会给出文件内容列表。

以这个文件为例:

# urls.txt
http://www.google.com
http://www.imdb.com

此外,养成使用上下文管理器的习惯,因为一旦您读完文件,它就会为您关闭文件。现在,即使您正在做的事情并没有真正的危险,您还是让您的文件处于打开状态。

Here 是文件文档中的信息。提到了处理文件和使用 with 的最佳实践。

代码中的第二个问题是,当您遍历 list(不应将其用作变量名,因为它隐藏了内置列表)时,您传递的是 list 到您的网络浏览器调用中。这绝对不是你想要做的。你想传递你的迭代器.

因此,考虑到所有这些,您的最终解决方案将是:

import webbrowser

with open("urls.txt") as f:
    for url in f:
        webbrowser.open_new_tab(url.strip())

请注意调用的 strip 以确保删除换行符。

您没有正确读取文件。你只读了第一行。此外,假设您正在正确读取文件,您仍在尝试打开 list,这是不正确的。您应该尝试打开 line.

这应该适合你:

import webbrowser

with open('file name goes here') as f:
    all_urls = f.read().split('\n')
    for each_url in all_urls:
        webbrowser.open_new_tab(each_url)

我的回答是假设文本文件中每行 1 个 URL。如果它们由空格分隔,只需将行更改为 all_urls = f.read().split(' ')。如果它们以另一种方式分开,只需相应地更改行即可。