首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >in2csv: iter_rows()获得意外的关键字参数“row_offset”

in2csv: iter_rows()获得意外的关键字参数“row_offset”
EN

Stack Overflow用户
提问于 2019-02-10 23:29:32
回答 2查看 3K关注 0票数 6

我使用的是csvkit version1.0.3中的in2csv,它是在Python3.7中使用pip安装的。

当使用该工具执行最基本的转换任务时,即

代码语言:javascript
复制
in2csv filename.xlsx > test.csv

我犯了个错误

代码语言:javascript
复制
iter_rows() got an unexpected keyword argument 'row_offset'

我知道这个错误是由底层的库openpyxl报告的。如何解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2019-02-16 04:29:01

自2019年2月6日起,iter_rows()中的row_offset参数似乎已被弃用,版本为2.6.0。我尝试查看提交历史记录,看到了以下更改:https://bitbucket.org/openpyxl/openpyxl/diff/openpyxl/worksheet/worksheet.py?diff1=e4ec3bde4dcc&diff2=3294de3d5668f462baaa6b0a3c17e3b92b8e5c48&at=default

要解决此问题,您必须不再使用row_offset,并相应地调整min_rowmax_row

例如:

如果您只处理工作表的第4行:

代码语言:javascript
复制
# old code
rows = worksheet.iter_rows(row_offset=3, max_row=1)

# new 
rows = worksheet.iter_rows(min_row=4, max_row=4)

如果您正在处理从第2行开始的行:

代码语言:javascript
复制
# old 
rows = worksheet.iter_rows(row_offset=1, max_row=(worksheet.max_row - 1)

# new 
rows = worksheet.iter_rows(min_row=2, max_row=worksheet.max_row)

我真的很喜欢这个改变,尽管它破坏了我的代码。我认为与使用row_offset相比,使用min_rowmax_row可以使代码更具可读性和直观性。

票数 4
EN

Stack Overflow用户

发布于 2019-02-20 07:28:30

我自己也遇到了这个问题,在我看来openpyxl的变化破坏了in2csv。

我已经通过卸载openpyxl并重新安装旧版本修复了这个问题。

代码语言:javascript
复制
pip uninstall openpyxl
pip install openpyxl==2.5 

或者,如果您像我一样都是从头开始安装,那么在安装csv工具包之前只需安装openpyxl2.5即可

代码语言:javascript
复制
pip install openpyxl==2.5
pip install csvkit
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54617949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档