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

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

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

开始跳坑。

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

入坑第一步 我使用了 python内置模块  os.system(cmd) 此命令运行部分linux命令如丝滑柔顺(比如不恰当,请原谅我这个幼儿园结业生,暂未踩到其他命令坑),但我用system调用了 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 命令 可以找到。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值