2 回答

TA贡献1829条经验 获得超9个赞
问题是当您从文件中读取 url 时。当您读取url
变量中的 url 时,它带有一个结尾\n
换行符。您必须删除它,然后使用该网址。
替换这一行:
addr1 = socket.gethostbyname(url)
有了这个:
addr1 = socket.gethostbyname(url.rstrip())
此外,我认为您对 python 的了解并不多,因为您的代码有各种需要更正的东西。
您有两个同名的文件引用
f
。不要这样做,它会导致一些奇怪的行为。您一次又一次地打开文件
for-loop
,它不是pythonic。只需打开文件一次,当任务结束时,关闭文件。用于
with
打开文件,您以后不必关闭文件。with
仅出于此目的,因此无需关闭文件。
您可以检查给定代码以了解上述几点。
import socket
with open("test.txt", 'r') as in_file, open("alive.txt", "a") as out_file :
for url in in_file:
try:
addr1 = socket.gethostbyname(url.rstrip())
print(addr1 + " is a valid url")
out_file.write("\n" + addr1)
except:
print("not valid")

TA贡献1820条经验 获得超3个赞
也许您可以尝试更改函数的顺序:
import socket
f = open("alive.txt", "w")
with open("output.txt") as fp:
line = fp.readline()
while line:
try:
clean_line = line.strip()
addr1 = socket.gethostbyname(clean_line)
print("valid url : " + addr1 + " from " + clean_line)
f.write(addr1 + "\n")
except:
print("not valid: " +addr1 + " from " + clean_line)
line = fp.readline()
f.close()
添加回答
举报