Запустите BigQuery из командной строки, используя модуль подпроцесса Python - команда FATAL 'bq ls redacted: dataid' unknown - PullRequest
0 голосов
/ 27 марта 2020

Мне нужно использовать модуль подпроцесса Python для запуска команд BigQuery CLI через Google Cloud SDK. Когда я запускаю приведенную ниже команду из командной строки, все работает так, как я ожидаю:

enter image description here

Я попытался запустить эту команду bq в следующем сценарии ios безуспешно:

  • в тандеме с полным путем к файлу 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)

Вот сообщение об ошибке:

FATAL Команда 'bq -q ls redacted: dataid' unknown
Запустите 'bq.py help', чтобы получить справку

Спасибо!

1 Ответ

0 голосов
/ 27 марта 2020

понял, мне нужно было перечислить каждый элемент моей команды отдельно:

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)
...