仅从 Python 中的文件中获取有效的 url

有人可以帮我吗?我有一个 output.txt 文件(示例文件),如下所示:


输出.txt:

account.netflix.com

prod.netflix.com

netflix.com

https://google.com

我正在尝试仅将带有此代码的现有 url 放入文件 alive.txt


import socket


with open("output.txt", 'r') as f:

    for url in f:

        try:

            addr1 = socket.gethostbyname(url)

            print(addr1 + " is a valid url")


            f = open("alive.txt", "a")

            f.write("\n" + addr1)

            f.close()


        except:

            print("not valid")


f.close()

我究竟做错了什么?


Smart猫小萌
浏览 161回答 2
2回答

PIPIONE

问题是当您从文件中读取 url 时。当您读取url变量中的 url 时,它带有一个结尾\n换行符。您必须删除它,然后使用该网址。替换这一行:addr1 = socket.gethostbyname(url)有了这个:addr1 = socket.gethostbyname(url.rstrip())此外,我认为您对 python 的了解并不多,因为您的代码有各种需要更正的东西。您有两个同名的文件引用f。不要这样做,它会导致一些奇怪的行为。您一次又一次地打开文件for-loop,它不是pythonic。只需打开文件一次,当任务结束时,关闭文件。用于with打开文件,您以后不必关闭文件。with仅出于此目的,因此无需关闭文件。您可以检查给定代码以了解上述几点。import socketwith 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")

DIEA

也许您可以尝试更改函数的顺序:import socketf = 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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python