Python使用Writer.save()指定新文件名报错:TypeError参数数量不符
解决ExcelWriter save()方法的TypeError问题
这个问题我之前也碰到过!原因很简单:save()方法本身不需要传入文件名参数——文件名应该在创建ExcelWriter实例的时候就指定好,而不是在保存的时候传。
你之前的错误写法大概是这样的:
# 错误写法示例 writer = pd.ExcelWriter() # 初始化时没指定文件名 # ...(写入数据的代码) writer.save('{}.xls'.format(cliente)) # 这里多传了参数,触发错误
正确的做法是在创建ExcelWriter对象时就把自定义文件名传进去,之后调用save()时不需要加任何参数:
# 正确写法示例 # 先构造自定义文件名 filename = f"{cliente}.xls" # 用f-string更简洁,format写法也没问题 # 初始化ExcelWriter时指定文件名 writer = pd.ExcelWriter(filename) # 写入你的数据,比如: # df.to_excel(writer, sheet_name="数据表格") # 最后直接调用save writer.save()
为什么会报错?
ExcelWriter的save()方法设计上只需要接收自身实例(也就是self,这个参数是Python自动传入的),它会使用你初始化时指定的文件名来完成保存。当你额外传入文件名参数时,就相当于给它传了2个参数(self+你传的文件名),而它只接受1个,所以就抛出了TypeError: save() takes exactly 1 argument (2 given)的错误。
如果是使用其他Excel处理库的ExcelWriter(比如xlwt、openpyxl对应的Writer类),逻辑也是完全一致的——文件名在初始化时指定,save方法不需要额外参数。
内容的提问来源于stack exchange,提问作者user9371527
相关产品推荐
相关产品推荐

