Python subprocess.check_output 解析错误

0 投票
1 回答
584 浏览
提问于 2025-04-17 12:46

这是一个简单的问题。我正在使用subprocess.check_output来执行sqlite3并读取输出。sqlite3命令行工具有一个选项,可以用“-separator ','”来改变输出的分隔符为逗号。这个在命令行中可以正常工作,像这样:

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

但是当我在subprocess命令中加上这个选项时,就出现了sqlite3的错误,提示“错误:选项太多”,并且引用了SELECT语句。不过,如果我在命令行中直接运行上面的命令,而不使用subprocess的格式,它就能正常工作。

如果我不加分隔符,它就能完美运行,像这样:

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

显然,我可能误解了subprocess中如何解析分隔符这个参数。有没有办法让我修改它,使其正常工作?顺便说一下,我不能使用sqlite3的Python库来解决这个问题。

1 个回答

1

这里有个更正:

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

在“ -separatator”开头的空格是错误的。

把“separator”和“,”放在一个参数里也是错误的。

在“sqlite3 ”结尾的空格也是错误的。

撰写回答