Документы настоятельно рекомендуют использовать инструмент командной строки, который нельзя использовать из интерпретатора Python. Вы можете сделать что-то вроде этого, чтобы преобразовать файл в формате CSV из командной строки (или вы могли бы вытолкнуть его в сценарий оболочки):
in2csv your_file.xlsx > your_new_file.csv
Если вы хотите, чтобы прочитать файл, просто сделать это (это похоже на то, что у вас есть, но вы не нужны никакие внешние модули, просто использовать встроенный в Python):
with open('input.xlsx') as csvfile:
reader = csvfile.readlines() # This was the only line of your code I changed
# below is just to test whether the file could be accessed
for row in reader:
print(row)
Или вы могли бы назвать вашу командную строку с помощью os
модуля:
# Careful, raw sys call. Use subprocess.Popen
# if you need to accept untrusted user input here
os.popen("in2csv your_file.xlsx > your_new_file.csv").read()
Один f вышеописанные фрагменты, вероятно, то, что вам нужно, но если вы действительно ищете наказание, вы можете попытаться использовать файл in2csv
внутри интерпретатора. Вот как вы можете пойти о выполнении этого (нет поддержки этого в документации, что я мог бы найти, это только мне ковыряться в интерпретаторе):
>>> from csvkit import in2csv
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name in2csv
>>> import csvkit
>>> help(csvkit)
Help on package csvkit:
NAME
csvkit
FILE
c:\python27\lib\site-packages\csvkit\__init__.py
DESCRIPTION
This module contains csvkit's superpowered alternative to the standard Python
CSV reader and writer. It can be used as a drop-in replacement for the standard
module.
.. warn::
Since version 1.0 csvkit relies on `agate <http://agate.rtfd.org>`_'s
CSV reader and writer. This module is supported for legacy purposes only and you
should migrate to using agate.
PACKAGE CONTENTS
cleanup
cli
convert (package)
exceptions
grep
utilities (package)
Таким образом, вы не можете импортировать in2csv непосредственно из csvkit (поскольку он не указан в списке PACKAGE CONTENTS
). Однако, если вы немного поиграете, вы обнаружите, что можете получить доступ к пакету от csvkit.utilities
. Но отсюда только ухудшается. Если вы делаете больше «помогать охоте» (т. Е. Вызывая помощь у интерпретатора), как указано выше, вы обнаружите, что класс был разработан для использования из командной строки. Так что это настоящая боль в заднице, чтобы использовать ее внутри интерпретатора. Вот пример того, чтобы использовать значения по умолчанию (результат взрыва):
>>> from csvkit.utilities import in2csv
>>> i = in2csv.In2CSV()
>>> i.main()
usage: [-h] [-d DELIMITER] [-t] [-q QUOTECHAR] [-u {0,1,2,3}] [-b]
[-p ESCAPECHAR] [-z FIELD_SIZE_LIMIT] [-e ENCODING] [-S] [-H] [-v]
[-l] [--zero] [-f FILETYPE] [-s SCHEMA] [-k KEY] [--sheet SHEET]
[-y SNIFF_LIMIT] [--no-inference]
[FILE]
: error: You must specify a format when providing data via STDIN (pipe).
Взглянув на in2csv.py модуля, вам придется обезьяны патч args
, чтобы заставить его делать то, что вы хотите изнутри переводчика. Опять же, это не было предназначено для использования внутри интерпретатора, оно предназначалось для вызова из строки cmd (так что args
определяется, если вы вызываете его из строки cmd). Кажется, что-то вроде этого бежало, но я не тестировал его полностью:
>>> from csvkit.utilities import in2csv
>>> i = in2csv.In2CSV()
>>> from collections import namedtuple
>>> i.args = namedtuple("patched_args", "input_path filetype no_inference")
>>> i.args.input_path = "/path/to/your/file.xlsx"
>>> i.args.no_inference = True
>>> i.args.filetype = None
>>> i.main()
Вы пытаетесь прочитать в файле? Или преобразовать его в csv?Судя по документам, которые вы связали, похоже, что это предназначено для использования в качестве утилиты командной строки – mwm314
Я пытаюсь ее преобразовать, у меня есть строки для чтения, чтобы помочь мне посмотреть, открыт ли файл/преобразован файл – Marcatectura
Is есть причина, по которой вы не можете использовать его из командной строки, как предлагают документы? Он не предназначен для использования в качестве библиотеки python. – mwm314