mongo eval命令在通过Python脚本使用时未计算

2024-09-30 22:25:08 发布

您现在位置:Python中文网/ 问答频道 /正文

当我从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" ]之外,情况几乎是一样的。你知道吗

我的脚本中是否有错误,或者这是预期的行为?你知道吗


Tags: to命令脚本dbserveradminversionmongo
1条回答
网友
1楼 · 发布于 2024-09-30 22:25:08

试试这个。让我来解释一下-默认情况下check_output有一个默认值shell=False,因此它会自己逃逸命令。你知道吗

import subprocess

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

相关问题 更多 >