0

我需要使用 Python 的 Subprocess 模块通过 Google Cloud SDK 运行 BigQuery CLI 命令。当我从命令行运行以下命令时,事情会按我的预期工作:

在此处输入图像描述

我曾尝试在以下场景中运行此 bq 命令但没有成功:

  • 与 Windows cmd.exe 文件的完整路径一起使用
  • 与 bq.cmd 文件的完整路径一起使用
  • 在第一次运行 bq.cmd 文件的完整路径后,仅使用 bq 命令

这是我列出的第二个示例中的代码,因为我认为它最接近正确?

  list_tables_bigquery = 'bq ls redacted:dataid'

    try:
        process = subprocess.Popen(["C:\\Users\\redacted.user\\AppData\\Local\\Google\Cloud SDK\\google-cloud-sdk\\bin\\bq.cmd",list_tables_bigquery],stdout=subprocess.PIPE, stderr = subprocess.STDOUT,shell=True,universal_newlines=True)
    except Exception as error:
        print(error)

powershell_communication = process.communicate()[0]

print(powershell_communication)

这是错误消息:

致命命令 'bq -q ls redacted:dataid' 未知
运行 'bq.py help' 以获得帮助

谢谢!

4

1 回答 1

0

想通了,我需要分别列出我的命令的每个元素:

try:
    #open bq program
    process = subprocess.Popen(["C:\\Users\\redacted.user\\AppData\\Local\\Google\Cloud SDK\\google-cloud-sdk\\bin\\bq.cmd",'ls', 'redacted:id'],stdout=subprocess.PIPE, stderr=subprocess.STDOUT,shell=True,universal_newlines=True)
except Exception as error:
    print(error)

bq_communication = process.communicate()[0]
print(powershell_communication)
于 2020-03-27T17:55:58.047 回答