从python中的文件中读取URL?

时间:2016-12-14 04:40:00

标签: python file url

嘿伙计,所以我试图从文件中读取URL并打印如果URL存在/可以访问?我不确定为什么这段代码不起作用: (我正在从.txt文件中读取网址)

我得到的错误是:

  CheckedRoutes checkedRoute = new CheckedRoutes(listViewItemPosition);

代码:

   name 'in_file' is not defined

3 个答案:

答案 0 :(得分:1)

在打印无法访问之前应该有其他内容。或者未经检查打印无法访问的网址。 现在,即使网址可以访问,您也可以打印无法访问的网址。

counter = 0
while line != "":
    counter += 1
    if not is_reachable(line):
        print("The URL on line ", counter, "is unreachable!")
    line = in_file.readline()

您的计划还有其他问题: 1.如果文件不可读,您的程序仍会继续 2.您正在使用计数器变量并明确维护它。您可以轻松使用枚举

更好的方法是:

from urllib.request import urlopen
import sys

def is_reachable(url):
    try: 
        urlopen(url)
        return True
    except: 
        return False

in_file_name = input("Enter file name: ")
lines = []
try:
    with open(in_file_name, 'r') as f:
        lines = f.read().splitlines()
except:
    print("Cannot open " + in_file_name)
    sys.exit(1)

for counter, line in enumerate(lines):
    if is_reachable(line):
        print("The URL on line ", counter, "is reachable!")
    else:
        print("The URL on line ", counter, "is unreachable!")

答案 1 :(得分:0)

如果您无法打开文件,则应退出脚本。当您的代码当前已写入时,如果无法打开文件,则会打印异常,然后尝试运行其余代码。

一个快速解决方法:

in_file_name = input("Enter file name: ")
try:
  in_file = open(in_file_name, "r")
except:
   print("Cannot open " + in_file)
   sys.exit(1) ### you will need to import the sys module

此外,您的输出错误。如果urlopen返回True,那么当你应该打印它可以达到的时候,你说它是不可行的。

最后,在is_reachable中,如果您尝试打开的网址存在解决问题,则需要处理可能的异常:

def is_reachable(url):
    try: 
      urlopen(url): 
      return True
    except urllib.error.URLError: 
      return False

答案 2 :(得分:0)

您的代码中有错误:

except:
    print('yadaya ' + in_file_name) # you have used in_file

我没有测试过,但是应该可以工作:

from urllib2 import urlopen # urllib is deprecated

if urlopen('http://google.com').getcode() >= 200 and urlopen('http://google.com') < 400:
    print ('Yes the URL exists and works.')

您需要额外工作才能进行重定向。