希望是一个简单的问题,使用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库。
答案 0 :(得分:1)
这是一个更正:
["sqlite3 ", " -separator ',' ", dbLocation, "SELECT blah from argh"] # yours
["sqlite3", "-separator", ",", dbLocation, "SELECT blah from argh"] # mine
“-separatator”开头的空格是错误的。
在一个参数中有“分隔符”和“,”也是错误的。
“sqlite3”末尾的空格也是错误的。