这可能很简单,但很长一段时间我都收到这个错误!
在 windows 和 python 2.7 上
import subprocess
p = subprocess.Popen(["C:\Program Files\Google\Cloud SDK\google-cloud-sdk\bin\bq"])
追溯(最近的调用最后): 文件“”,第 1 行,位于 init 中的文件“C:\Python27\lib\subprocess.py”,第 710 行 读错,写错) 文件“C:\Python27\lib\subprocess.py”,第 958 行,在 _execute_child 中 启动信息) WindowsError: [错误 2] 系统找不到指定的文件
当我使用 bq 从命令提示符正常运行时,它运行完美。 我在子流程和 bq 中遗漏了一些东西。
谢谢
编辑: 在尝试了下面提供的几种解决方案后,我发现当我使用“shell=True”时,大多数命令都适用于 Windows shell!
e.g: p = subprocess.Popen('dir', shell=True)
最佳答案
使用其中之一:
from subprocess import Popen
p = Popen(["C:/Program Files/Google/Cloud SDK/google-cloud-sdk/bin/bq.cmd"])
p = Popen([r"C:\Program Files\Google\Cloud SDK\google-cloud-sdk\bin\bq.cmd"])
适用于 Windows 的 Google Cloud SDK 中的 bq 可执行文件称为 bq.cmd。从命令行调用它时,cmd 会自动查找 .cmd 扩展名,而 python 解释器则不会。
关于python - Windows 上的 Bigquery 命令行工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28464658/