报错:'PosixPath'对象无'with_stem'属性,代码运行异常求助
问题分析
报错提示'PosixPath' object has no attribute 'with_stem',但你贴出的代码里并没有直接调用with_stem方法。大概率是两种原因:
- 你传入的
vid_path是pathlib库的PosixPath对象,后续未展示的代码里对这个路径调用了with_stem; - 你的Python版本低于3.10——
with_stem是Python 3.10才新增的pathlib.Path方法,低版本不支持。
解决方案
情况1:确实用到了with_stem(代码未贴全)
- 升级Python版本:直接把Python升到3.10及以上,就能正常使用
with_stem方法。 - 兼容低版本写法:如果不想升级,用下面的代码替代
with_stem的功能:# 替代原代码中的 path.with_stem("新文件名") new_path = path.parent / f"新文件名{path.suffix}"
情况2:路径对象导致的问题
如果是传入cv2.VideoCapture的vid_path是PosixPath对象,转成字符串再传入即可:
vid = cv2.VideoCapture(str(vid_path))
代码优化建议
你贴的这段提取视频帧的代码有两个小问题,建议修正:
- 循环没有终止条件:视频读完后
success会变为False,此时应该退出循环,否则会无限执行。修改后的循环逻辑:while True: success, frame = vid.read() if not success: break # 视频读取完毕,退出循环 # 保存帧的代码... currentframe += 1 - 记得释放视频资源:循环结束后加上
vid.release(),避免占用系统资源。
内容的提问来源于stack exchange,提问作者Saleh
相关产品推荐
相关产品推荐

