2012-02-10 100 views
0

希望有一個簡單的問題,使用subprocess.check_output我想執行sqlite3並在輸出中讀取。有一個可用於sqlite3 CLI的標誌,您可以使用「-separator',''來啓動它,以將輸出的分隔符​​更改爲逗號。 它在命令行工作,如果我這樣包含它;Python subprocess.check_output解析錯誤

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

那麼它失敗了sqlite3的CLI錯誤"Error: too many options"並引用SELECT語句,但是如果我只是一個shell運行命令如上而不考慮它按預期工作的子命令的格式。

如果我再次運行它沒有分隔符它運行完美,就像這樣;

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

顯然我要麼錯誤理解它是如何解釋的分離參數的子進程,是有辦法,我可以修改它才能正常工作? 對於好奇,我無法使用sqlite3 python庫。

回答

1

這裏有一個修正:

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

在 「-separatator」 開頭的空格是錯誤的。

在一個參數中有「分隔符」和「,」也是錯誤的。

「sqlite3」結尾的空格也是錯誤的。

+0

嘿,知道這將是一件愚蠢的事情。謝謝 – Draineh 2012-02-10 12:42:58