Python传递完整列表作为函数参数不生成JSON文件问题咨询
问题1:Line X 位置的返回值设置
pandas.DataFrame.to_json()方法如果传入了文件路径作为第一个参数,会直接将JSON内容写入磁盘,默认返回None。返回值可根据你的实际需求选择:
- 无需后续使用生成的JSON内容的话,可以不用写返回语句,文件会在方法执行完成后正常生成
- 需要校验生成结果或者后续使用JSON字符串的话,可以返回
json_str,也可以新增文件存在性校验后返回布尔值,比如return os.path.exists(PathLink)表示是否生成成功
问题2:Line Y、Line Z 处的传参语法问题
存在明显错误:
你的json_file函数第二个形参i_indexList要求接收列表类型的参数,但Line Z中你用*indexList对列表做了解包操作,相当于把[3,5,6,18,19]拆成了5个独立的参数传入,加上前后的'test'和'codenum',总共传入7个参数,和函数定义的3个形参完全不匹配。
正确的调用写法为直接传入列表本身:
json_file('test', indexList, 'codenum')
另外Line Y末尾的--Line Y属于非法语法,仅做标记的话要加#改为注释:indexList=[3,5,6,18,19] # Line Y
问题3:是否为缩进错误导致的
是,这是当前代码不生效的核心原因:
你代码中if Priendpoint.get() == ' Code 1':这段逻辑的缩进和json_file函数内部代码层级一致,说明这段逻辑属于函数内部的代码,只有调用json_file的时候才会执行这段判断:
- 如果调用时
Priendpoint.get()不符合判断条件,if内部的函数调用永远不会执行 - 就算符合判断条件,这里调用
json_file会触发无限递归,最终程序报错退出
你需要把这段if判断的代码整体取消缩进,放到json_file函数定义的外部,才能正常触发函数调用。
额外注意点
你代码中单独一行的df_filtered没有任何执行作用,可以直接删除;同时要确认路径拼接用的path变量已经提前定义,否则会出现路径拼接错误。
内容的提问来源于stack exchange,提问作者Divya Sam
相关产品推荐
相关产品推荐

