Python调用PIL打开pathlib.WindowsPath对象报FileNotFoundError问题
问题根因
random.choices() 函数的返回值是包含选中元素的列表,而非单个选中元素。你在random_list()函数中直接将choices()返回的列表追加到了combo列表中,导致最终生成的路径列表是嵌套结构,存储的不是直接可用的WindowsPath对象,而是套了一层列表的[WindowsPath对象]。当你把该值转为字符串传入Image.open()时,就会生成"[WindowsPath('dir1/img1.png')]"这样的非法路径,触发文件找不到报错。
解决方法
仅需修改random_list()函数中取随机选中结果的一行代码,提取choices()返回列表的第一个元素即可,修正后combo中存储的就是单个WindowsPath对象,和你正常运行的第一组列表格式完全一致。
修正后的代码片段:
def random_list(): combo = [] for d, p in zip(layers, probabilities): # 取choices返回列表的第一个元素,避免嵌套列表结构 ch = choices(d, p)[0] combo.append(ch) return combo
修改后再运行即可正常读取图片。
内容的提问来源于stack exchange,提问作者Dominick Fiducia
相关产品推荐
相关产品推荐

