我正在尝试编写一个脚本来自动浏览到我最常访问的网站。我已将网站放入列表中,并尝试使用Python中的webbrowser()
模块打开它。我的代码目前看起来如下:
import webbrowser
f = open("URLs", "r")
list = f.readline()
for line in list:
webbrowser.open_new_tab(list)
这只从我的文件“URL”中读取第一行,并在浏览器中打开它。请问任何人可以帮助我了解如何阅读整个文件并在不同标签中打开网址?
还有其他选项可以帮助我实现同样的目标。
答案 0 :(得分:1)
你有两个主要问题。
您遇到的第一个问题是您使用的是readline
而不是readlines
。 readline
将为您提供文件中的第一行,而readlines
则会为您提供文件内容列表。
以此文件为例:
# urls.txt
http://www.google.com
http://www.imdb.com
此外,养成使用上下文管理器的习惯,因为一旦完成读取,它将为您关闭文件。现在,即使你正在做什么,也没有真正的危险,你打开文件。
Here是文件文档中的信息。提到了处理文件和使用with
的最佳做法。
代码中的第二个问题是,当您迭代list
时(不应将其用作变量名,因为它会影响内置列表),您将传递list
你的webrowser电话。这绝对不是你想要做的。您想要传递迭代器。
因此,考虑到所有这些,您的最终解决方案将是:
import webbrowser
with open("urls.txt") as f:
for url in f:
webbrowser.open_new_tab(url.strip())
请注意调用的strip
以确保删除换行符。
答案 1 :(得分: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(' ')
即可。如果他们以另一种方式分开,只需将该行更改为相应的分割。