python中 subprocess shell=False 与shell=True的区别
来源:互联网 发布:mysql 数据库设计模式 编辑:程序博客网 时间:2024/06/06 16:31
shell=True参数会让subprocess.call接受字符串类型的变量作为命令,并调用shell去执行这个字符串,当shell=False是,subprocess.call只接受数组变量作为命令,并将数组的第一个元素作为命令,剩下的全部作为该命令的参数。
举个例子来说明:
from subprocess import call import shlex cmd = "cat test.txt; rm test.txt" call(cmd, shell=True)
上述脚本中,shell=True的设置,最终效果是执行了两个命令
cat test.txt 和 rm test.txt
把shell=True 改为False,
from subprocess import call import shlex cmd = "cat test.txt; rm test.txt" cmd = shlex(cmd) call(cmd, shell=False)
则调用call的时候,只会执行cat的命令,且把 "test.txt;" "rm" "test.txt" 三个字符串当作cat的参数,所以并不是我们直观看到的好像有两个shell命令了。
也许你会说,shell=True 不是很好吗,执行两个命令就是我期望的呀。但其实,这种做法是不安全的,因为多个命令用分号隔开,万一检查不够仔细,执行了危险的命令比如 rm -rf / 这种那后果会非常严重,而使用shell=False就可以避免这种风险。
总体来说,看实际需要而定,官方的推荐是尽量不要设置shell=True。
阅读全文
1 0
- python中 subprocess shell=False 与shell=True的区别
- subprocess shell=True的测试
- 如何结束一个python启动的shell子进程(How to terminate a python subprocess launched with shell=True)
- true false 与TRUE FALSE 的区别
- FALSE/TRUE与false/true的区别
- FALSE/TRUE与false/true的区别
- FALSE/TRUE与false/true的区别
- FALSE/TRUE与false/true的区别
- python subprocess模块的shell参数问题
- python与shell的区别
- python与shell的区别
- Python subprocess shell 丢失环境变量
- Python subprocess shell 编程规范
- python执行shell-subprocess模块
- 逻辑运算中true和false的数字表现形式true=1 false=0
- proxy-target-class="true" 与proxy-target-class="false"的区别
- proxy-target-class="true" 与proxy-target-class="false"的区别
- proxy-target-class="true" 与proxy-target-class="false"的区别
- 矩阵快速幂练习
- 关于STM32能否使用malloc申请动态内存的问题
- 1981年柏林的德国逻辑思考学院面试题,逆天5*5推理题!
- 【Kotlin】基础语法学习
- 测试的一些基本
- python中 subprocess shell=False 与shell=True的区别
- sqlilabs 下的less7
- View基本知识
- Java两种线程的创建
- c++网络编程(1)
- pip install 出现报asciii码错误的问题
- Linux so动态库存放解决方案
- Blur Gym
- 编译安装openresty+php7.1