如何使用 Python 中的打开函数读取文件中存在的所有链接?
How do i read all the links present in a file using open function in Python?
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
编辑
好的,所以我 copied/followed 代码完全正确,但是当我 运行 在文本小部件中看不到图像时,只能看到白屏
首先,您跳过了第一行。您可能想要包含它,如下所示:
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_line
与 url.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()
。
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
编辑
好的,所以我 copied/followed 代码完全正确,但是当我 运行 在文本小部件中看不到图像时,只能看到白屏
首先,您跳过了第一行。您可能想要包含它,如下所示:
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_line
与 url.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()
。