为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Smart猫小萌 2022-11-01 16:47:37
有人可以帮我吗?我有一个 output.txt 文件(示例文件),如下所示:输出.txt:account.netflix.comprod.netflix.comnetflix.comhttps://google.com我正在尝试仅将带有此代码的现有 url 放入文件 alive.txtimport socketwith 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()我究竟做错了什么?
查看完整描述

2 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

问题是当您从文件中读取 url 时。当您读取url变量中的 url 时,它带有一个结尾\n换行符。您必须删除它,然后使用该网址。

替换这一行:

addr1 = socket.gethostbyname(url)

有了这个:

addr1 = socket.gethostbyname(url.rstrip())

此外,我认为您对 python 的了解并不多,因为您的代码有各种需要更正的东西。

  1. 您有两个同名的文件引用f。不要这样做,它会导致一些奇怪的行为。

  2. 您一次又一次地打开文件for-loop,它不是pythonic。只需打开文件一次,当任务结束时,关闭文件。

  3. 用于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")


查看完整回答
反对 回复 2022-11-01
?
DIEA

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()


查看完整回答
反对 回复 2022-11-01
  • 2 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号