python - 如何使用 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 字符串。你可以使用 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_line
vs的更正url.readlines
。
推荐阅读
- mysql - 用户“root”和“pma”的 MySQL 访问被拒绝。(视窗)
- pandas - Pandas:检查值错误是否在区间内,错误信息:InvalidOperation: [
] - javascript - 如何在 React-Native 中创建新的 var 并让用户获得价值?
- clock - NTP 发出的哪些系统调用会影响 CLOCK_MONOTONIC?
- vuejs2 - 获取请求后无法设置属性 - Axios 和 HTML5 数据列表
- javascript - 在单击侦听器旁边添加 keydown 事件 - 要侦听哪些键事件?
- html - 如何将 3 列对齐到 div 内的左侧?
- ios - swift中的异步任务后键盘不会关闭
- java - Java 的 awt KeyListener 是否在单独的线程上运行?
- c++ - Nvidia PhysX - 如何制作 TriangleMesh?