Python subprocess.check_output解析错误

时间:2012-02-10 12:29:10

标签: python sqlite subprocess

希望是一个简单的问题,使用subprocess.check_output我试图执行sqlite3并读取输出。有一个可用于sqlite3 CLI的标志,您可以使用“-separator”,“”来启动它,以将输出的分隔符​​更改为逗号。 它在命令行工作,如果我像这样包含它;

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

然后它失败并出现sqlite3 CLI错误"Error: too many options"并引用SELECT语句,但如果我只是在没有subprocess命令格式的shell上运行上面的命令,它会按预期工作。

如果我在没有分隔符的情况下再次运行它,它会完美地运行,就像这样;

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

显然,我要么误解了它是如何解释子进程中的分隔符参数,有没有办法可以修改它才能正常运行? 对于好奇,我不能使用sqlite3 python库。

1 个答案:

答案 0 :(得分:1)

这是一个更正:

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

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

在一个参数中有“分隔符”和“,”也是错误的。

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