首页 > 解决方案 > 如何使用 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    

编辑

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

标签: pythonpython-3.xtkintertkinter-text

解决方案


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

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 字符串。你可以使用 a 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_linevs的更正url.readlines


推荐阅读