嘿伙计,所以我试图从文件中读取URL并打印如果URL存在/可以访问?我不确定为什么这段代码不起作用: (我正在从.txt文件中读取网址)
我得到的错误是:
CheckedRoutes checkedRoute = new CheckedRoutes(listViewItemPosition);
代码:
name 'in_file' is not defined
答案 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.')
您需要额外工作才能进行重定向。