Ошибка разбора Python subprocess.check_output - PullRequest
0 голосов
/ 10 февраля 2012

Надеюсь, простая проблема, с использованием subprocess.check_output Я пытаюсь выполнить sqlite3 и прочитать в выводе. Для CLI sqlite3 имеется флаг, с помощью которого вы можете запустить его с «-separator», чтобы изменить разделитель для вывода на запятую. Он работает в командной строке, если я включу его так:

sqliteOutput = subprocess.check_output(["sqlite3 "," -separator ',' ",dbLocation,"SELECT blah from argh"])

Затем происходит сбой с ошибкой CLI sqlite3, "Error: too many options", и он цитирует инструкцию SELECT, но если я просто запускаю команду, как указано выше, в оболочке без формата для команды подпроцесса, она работает как ожидалось.

Если я запускаю его снова без разделителя, он работает отлично, вот так;

sqliteOutput = subprocess.check_output(["sqlite3 ",dbLocation,"SELECT blah from argh"])

Очевидно, я либо неправильно понимаю, как он интерпретирует аргумент-разделитель в подпроцессе, есть ли способ изменить его для правильной работы? Для любознательных я не могу использовать для этого библиотеку Python sqlite3.

1 Ответ

1 голос
/ 10 февраля 2012

вот исправление:

["sqlite3 ", " -separator ',' ", dbLocation, "SELECT blah from argh"] # yours
["sqlite3", "-separator", ",", dbLocation, "SELECT blah from argh"] # mine

пробел в начале "-separatator" неправильный.

иметь в качестве аргумента "separator" и "," в одном аргументе тоже неправильно.

пробел в конце "sqlite3" также неверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...