执行命令

本文主要对比3种python执行命令执行方法

1、os.system(cmd)

   特点:

   1、无法获取cmd执行的结果,返回的是执行的退出码

   2、当前是deprecated。

   3、直接使用是阻塞的,使用线程启动是非阻塞的

 

2、os.popen(cmd)

    特点:打开一个管道,它通往/接受自命令 cmd

    1、为文件管道,所以最佳实践

    with os.popen(command, "r") as p:

    r = p.read()

    2、非阻塞,可以使用read(),readlines()实现阻塞

3、subprocess

     官方推荐使用api

     1、常用高级别api subprocess.run ; 当需要细节控制执行过程或者执行结果的处理,可以使用低层级api  subprocess.Popen, 然后使用communicate(),wait等api

     2、当subprocess.run/subprocess.Popen第一参数输入为字符窜,需带上参数Shell=true,表明按照shell脚本执行字符窜;当一次参数输入为列表,则Shell=False(默认为False)

     3、从防止命令注入的角度,如果字符窜为外部输入,第一个参数建议使用数组

  

posted @ 2021-01-15 10:44  哈哈哈喽喽喽  阅读(345)  评论(0编辑  收藏  举报