0

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

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

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

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

4

2 回答 2

1

你有两个主要问题。

您遇到的第一个问题是您正在使用readline而不是readlines. readline将为您提供文件中的第一行,同时readlines为您提供文件内容列表。

以这个文件为例:

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

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

是文件文档中的信息。提到了处理文件和使用with.

代码中的第二个问题是,当您进行迭代时list(您不应该将其用作变量名,因为它会隐藏内置列表),您正在传递list给您的 webbrowser 调用。这绝对不是你想要做的。你想传递你的迭代器

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

import webbrowser

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

请注意strip为了确保删除换行符而调用的。

于 2016-09-01T02:13:00.953 回答
0

您没有正确读取文件。您只阅读第一行。此外,假设您正在正确读取文件,您仍在尝试打开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(' '). 如果它们以另一种方式分开,只需将行更改为相应地拆分。

于 2016-09-01T02:13:53.707 回答