【问题标题】:Python subprocess.check_output parsing errorPython subprocess.check_output 解析错误
【发布时间】:2012-02-10 12:29:10
【问题描述】:

希望是一个简单的问题,使用 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 语句,但如果我只是在没有子进程命令格式的 shell 上运行上述命令,它会按预期工作。

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

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

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

【问题讨论】:

    标签: python sqlite subprocess


    【解决方案1】:

    这里有一个更正:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-05-04
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 2018-05-21
      相关资源
      最近更新 更多