python - 通过 Python 脚本使用 mongo --eval 命令时未评估

标签 python bash mongodb

当我从 bash 终端运行此命令时,我得到了预期的结果:

$ mongo --eval "db.getMongo().getDBNames()"
> MongoDB shell version v3.4.2
> connecting to: mongodb://127.0.0.1:27017
> MongoDB server version: 3.4.2
> [ "admin", "local" ]

我需要从 Python 脚本运行此命令。这是我写的:

import subprocess

cmd = ['mongo', '--eval', '\"db.getMongo().getDBNames()\"']
result = subprocess.check_output(cmd)
print(result)

这是运行此脚本时的结果:

$ python3 log.py
> b'MongoDB shell version v3.4.2\nconnecting to: mongodb://127.0.0.1:27017\nMongoDB server version: 3.4.2\ndb.getMongo().getDBNames()\n'

如您所见,除了显示原始命令 db.getMongo().getDBNames() 而不是预期结果 [ "admin", "local “]

我的脚本中是否有错误或者这是预期的行为?

最佳答案

试试这个。让我解释一下 - 默认情况下 check_output有一个默认值 shell=False,因此它会自行转义命令。

import subprocess

cmd = ['mongo', '--eval', 'db.getMongo().getDBNames()']
result = subprocess.check_output(cmd)
print(result)

关于python - 通过 Python 脚本使用 mongo --eval 命令时未评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46564840/

相关文章:

python - 在不更改贡献者的情况下重命名 git 中的文件夹

python - python中全局变量的频率?

bash - "find"当前目录下的文件但跳过了一些特定的子目录

macos - bash for循环使用带空格的变量

bash - 从终端/bash 获取 Macbook 屏幕尺寸

Django 序列化为 JSON 错误 : 'MetaDict' object has no attribute 'concrete_model'

mongodb - MongoMapper 接近 maxDistance - Mongo::OperationFailure:地理值必须是数字:

python - 尽管一切似乎都正常,神经网络却给出了错误的预测

python - 如何更改 mongodb flask ?

python - 当我在开始时得到几行新行时,如何从字母表开始打印