Python 脚本调用 mongoexport命令 解决方案

时间:2024-03-19 18:01:28

本人是一名幼儿园结业的 python程序员,人生苦短我用Python,不喜勿喷,希望能够帮助广大的猿们。

项目需要对mongoDB进行数据备份,在写python脚本运行 shell命令mongoexport时 出现了无法识别此命令的问题。

开始跳坑。

如果你是 win下开发不会烦恼此问题,因为 win和linux对命令解析方式 是不同的。(在这先不多说解析命令方式了)

入坑第一步 我使用了 python内置模块  os.system(cmd) 此命令运行部分linux命令如丝滑柔顺(比如不恰当,请原谅我这个幼儿园结业生,暂未踩到其他命令坑),但我用system调用了 mongoexport 命令后出现找不到命令的问题(可能大神一眼就能看出这是为什么)

Python 脚本调用 mongoexport命令 解决方案

没错它识别步到 --type=json 选项是什么了,也就是入坑的第一步你会查为无法识别。从百度-->Google 你发现找不到相关解答,我可以肯定告诉你 这不是"识别问题" 而是它根本就没有识别到这是一个 MongoDB的工具.

所以使用 os.system 放弃吧骚年

解决方案:subprocess 模块 

此模块可以从更好的运行 shell命令 是python 可能是三方模块具体没查。

谷歌 or 百度都可以找到相关使用方法,里面参数很多要好好阅读。

当你要指定运行shell时一定要将shell参数设置为True。使用subprocess.call(str,shell=True)

更加关键的是要设置环境变量,虽然env=None会继承 父进程的环境变量但是出现  No such file or directory 这是因为没有环境变量的问题。不必担心 只要在环境变量选项中 env=字典格式的 {'命令':'命令位置'}就能解决此问题了。

完整的:  subprocess.call(cmd,env={'mongoexport':'命令位置'},shell=True)

注意: cmd 必须为 字符串 且 必须与命令行输入的格式保持一致。

命令位置可以使用: where is -b mongoexport  where is 命令 可以找到。