微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Python 中的 open 函数读取文件中存在的所有链接?

如何解决如何使用 Python 中的 open 函数读取文件中存在的所有链接?

imagelist=[]
with open("imagelink.txt") as url:
    for url2 in url:
        if url2.strip():
            raw_data= urllib.request.urlopen(url2.strip()).read()
            im = ImageTk.PhotoImage(data=raw_data)
            result = maintext.image_create(0.0,image=im)
            imagelist.append(im) # save a reference of the image    

编辑

好的,所以我完全复制/遵循了代码,但是当我运行时,在文本小部件中看不到图像,只能看到白屏

解决方法

首先,您正在跳过第一行。您可能希望包含它,如下所示:

with open("imagelink.txt") as url:
    for url2 in url.readlines():
        # do stuff

其他:

with open("imagelink.txt") as url:
    line = url.readline()
    while line:
        # do stuff
        line = url.readline()

然后,您可能需要检查您的线路是否包含一个或多个 url 字符串。您可以为此使用 regular expression

import re
# Example of regex pattern matching urls. You can find more defined ones,if you need.
url_pattern = r"http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+"

with open("imagelink.txt") as url:
    line = url.readline()
    while line:
        for link in re.findall(url_pattern,line):
             u = urllib.request.urlopen(link)
             # do other stuff
        line = url.readline()

第二个内部 for loop 确保您不会尝试对不是 url 的内容执行任何操作。如果没有找到 url,则内循环将中断并传递到下一行。

感谢 @acw1668 对 url.read_lineurl.readlines 的更正。

,

只显示文本小部件中的第一张图片,因为您对 PhotoImage() 的所有实例使用了相同的变量,因此之前加载的图片将被垃圾收集。

您需要为所有图像实例保存一个引用:

imagelist = []  # list to store references of image
with open("imagelink.txt") as url:
    for url2 in url:
        if url2.strip():
            raw_data = urllib.request.urlopen(url2.strip()).read()
            im = ImageTk.PhotoImage(data=raw_data)
            result = maintext.image_create(0.0,image=im)
            imagelist.append(im) # save a reference of the image

请注意,maintext.image_create(...) 的结果不是 tkinter 小部件,因此您不能对其调用 .pack()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。