使用PIL Image.split()报错:TypeError仅接受1个参数却传入2个
问题解决建议
错误原因
你代码里的M2是通过Image.open()创建的PIL Image对象,它自带的split()方法是用于分离图像颜色通道的,这个方法不需要传入任何参数。而你想调用的是字符串的split()方法来拆分文件名,应该用循环中的M1(这才是存储文件名的字符串变量)。
修正代码
把涉及split()的两行代码里的M2替换成M1即可:
if data_sum == 0: I1 = M1.split("_")[0] I2 = M1.split("_")[1].split("_cp")[0] I3 = I1 + '_' + I2 + imgType os.rename(imgInputPath + I3, imgOutputPath + I3) os.rename(maskInputPath + M1, maskOutputPath + M1)
额外优化建议
拼接文件路径时,建议使用os.path.join()替代直接字符串相加,这样能避免不同操作系统路径分隔符(Windows是\,Linux/macOS是/)的兼容性问题,比如:
# 替换这类写法 M2 = Image.open(maskInputPath + M1) # 改成 M2 = Image.open(os.path.join(maskInputPath, M1))
内容的提问来源于stack exchange,提问作者msshah
相关产品推荐
相关产品推荐

