in2csv: iter_rows () получил неожиданный аргумент ключевого слова 'row_offset' - PullRequest
0 голосов
/ 10 февраля 2019

Я использую in2csv из csvkit версии 1.0.3, установленную с помощью pip с Python 3.7.

При использовании инструмента для наиболее простой задачи преобразования, т. Е.

in2csv filename.xlsx > test.csv

Я былХит с ошибкой

iter_rows() got an unexpected keyword argument 'row_offset'

Я понимаю, что об ошибке сообщила базовая библиотека openpyxl.Как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Просто столкнулся с этой проблемой сам, мне кажется, что изменение в openpyxl сломало in2csv.

Я исправил это, удалив openpyxl и переустановив старую версию.

pip uninstall openpyxl
pip install openpyxl==2.5 

Или, если вы, как и я, устанавливаете все это с нуля, просто установите openpyxl 2.5 перед установкой csv kit

pip install openpyxl==2.5
pip install csvkit
0 голосов
/ 15 февраля 2019

Похоже, что параметр row_offset внутри iter_rows () уже устарел с версии openpyxl 2.6.0 6 февраля 2019 года. Я попытался просмотреть историю коммитов и увидел следующие изменения: https://bitbucket.org/openpyxl/openpyxl/diff/openpyxl/worksheet/worksheet.py?diff1=e4ec3bde4dcc&diff2=3294de3d5668f462baaa6b0a3c17e3b92b8e5c48&at=default

Чтобы исправить это, вы больше не должны использовать row_offset и соответственно настроить min_row и max_row.

например

Если вы обрабатываете только 4-ю строкулиста:

# old code
rows = worksheet.iter_rows(row_offset=3, max_row=1)

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

Если вы обрабатываете строки, начиная со 2-й строки:

# 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)

Мне действительно нравится это изменение, даже если оно нарушает мои коды.Я думаю, что использование min_row и max_row делает код более читабельным и интуитивно понятным, чем использование row_offset.

...