python中subprocess(如何在python的程序中调用subprocess)

1.如何在python的程序中调用subprocess

'C:\DSATools_8_net\Tsat\bin\tsat_batch.exe'

兄弟,这里有问题.

'C:\\DSATools_8_net\\Tsat\\bin\\tsat_batch.exe'

python里单引号和双引号是一样的东西,perl和shell里的才不一样.反斜杠有转义作用,你要在文本中用反斜杠原字符,就得再拿一个反斜杠转义一下嘛!!

当然,你也可以写成:

'C:/DSATools_8_net/Tsat/bin/tsat_batch.exe'

2.python中 subprocess shell=False 与shell=True的区别

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。

3.如何在Python中使用subprocess准备shell执行环境

#! /usr/bin/env python # -*- coding: utf-8 -*-"""TO generate random shellcode samples from msfvenomcommand ="msfvenom -p linux/x86/shell/reverse_tcp -e x86/shikata_ga_nai -f raw""""import randomfrom info import *import uuidimport osimport subprocessimport sysos.chdir('/opt/metasploit-framework/')count = int(sys.argv[1])while (count > 0): count -= 1 e = encoders[random.randint(0, len(encoders)-1)] payloads = linux_x86_shellcodes + windows_x86_shellcodes p = payloads[random.randint(0, len(payloads)-1)] command ="./msfvenom -p {0} -e {1} -f raw > /var/tmp/data/".format(p, e) + str(uuid.uuid4()) subprocess.Popen("source /usr/local/rvm/scripts/rvm;"+ command, shell=True, executable='/bin/bash')请采纳。

4.python subprocess怎样才能 popen的进程

在收集snmp数据的过程中用到了subprocess这个模块,本来想用其他python里面关于snmp的库,还是觉得麻烦就直接调用snmpwalk来收集数据。

最开始想用subprocess.call()这个函数,然而这个函数没有和其他进程通信的功能就放弃了 google了一下找到subprocess.Popen()这个函数,具体用法后面会贴一个别人写的帖子 其中subprocess.PIPE类似于pipe()系统调用,不过不需要指定PID,只需要把stdout,stdin,error指定为subprocess.PIPE就可以了 我写的这个小脚本里面有参数shell=True,意思是通过shell执行命令而不是直接的execvp()#!/usr/bin/env python # gathering snmp data import subprocess import os cmd="snmpwalk -v 2c ip -c group" fd=open("/home/user/snmptest","w") data=subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True) fd.write(data.stdout.read()) fd.close() 执行之后snmptest里面就写入了收集来的snmp数据 另外贴一个别人总结的subprocess的使用方法 Python模块学习 ---- subprocess 创建子进程 最近,我们老大要我写一个 守护者程序,对服务器进程进行守护。如果服务器不幸挂掉了,守护者能即时的重启应用程序。

上网Google了一下,发现Python有很几个模块都可以创 建进程。最终我选择使用subprocess模块,因为在Python手册中有这样一段话: This module intends to replace several other, older modules and functions, such as: os.system、os.spawn*、os.popen*、popen2.*、commands.* subprocess被用来替换一些老的模块和函数,如:os.system、os.spawn*、os.popen*、popen2.*、commands.*。

可见,subprocess是被推荐使用的模块。下面是一个很简单的例子,创建一个新进程,执行app1.exe,传入相当的参数,并打印出进 程的返回值:import subprocess returnCode = subprocess.call('app1.exe -a -b -c -d') print 'returncode:', returnCode#----- 结果 --------#Python is powerful#app1.exe#-a#-b#-c#-d returncode: 0 app1.exe是一个非常简单的控制台程序,它只打印出传入的参数,代码如下:#include using namespace std; int main(int argc, const char *argv[]) { cout << "Python is powerful" << endl; for (int i = 0; i < argc; i++) { cout << argv[i] << endl; } return 0; } 闲话少说,下面开始详细介绍subprocess模块。

subprocess模块中只定义 了一个类: Popen。可以使用Popen来创建进程,并与进程进行复杂的交互。

它的构造函数如下:subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0) 参数args可以是字符串或者序列类型(如:list,元组),用于指定进程的可执行文件及其参数。如果是序列类型,第一个元素通常是可执行文件的路 径。

我们也可以显式的使用executeable参数来指定可执行文件的路径。在windows操作系统上,Popen通过调用 CreateProcess()来创建子进程,CreateProcess接收一个字符串参数,如果args是序列类型,系统将会通过 list2cmdline()函数将序列类型转换为字符串。

参数bufsize:指定缓冲。我到现在还不清楚这个参数的具体含义,望各个大牛指点。

参数executable用于指定可执行程序。一般情况下我们通过args参数来设置所要运行的程序。

如果将参数shell设为 True,executable将指定程序使用的shell。在windows平台下,默认的shell由COMSPEC环境变量来指定。

参数stdin, stdout, stderr分别表示程序的标准输入、输出、错误句柄。他们可以是PIPE,文件描述符或文件对象,也可以设置为None,表示从父进程继承。

参数preexec_fn只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用。参数Close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管 道。

我们不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。如果参数shell设为true,程序将通过shell来执行。

参数cwd用于设置子进程的当前目录。参数env是字典类型,用于指定子进程的环境变量。

如果env = None,子进程的环境变量将从父进程中继承。参数Universal_newlines:不同操作系统下,文本的换行符是不一样的。

如:windows下用'\r\n'表示换,而Linux下用 '\n'。如果将此参数设置为True,Python统一把这些换行符当作'\n'来处理。

参数startupinfo与createionflags只在windows下用效,它们将被传递给底层的CreateProcess()函数,用 于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等。subprocess.PIPE 在创建Popen对象时,subprocess.PIPE可以初始化stdin, stdout或stderr参数。

表示与子进程通信的标准流。subprocess.STDOUT 创建Popen对象时,用于初始化stderr参数,表示将错误通过标准输出流输出。

Popen的方法:Popen.poll() 用于检查子进程是否已经结束。设置并返回returncode属性。

Popen.wait(。

python中subprocess

转载请注明出处代码入门网 » python中subprocess(如何在python的程序中调用subprocess)

资讯

脚本模式Python(如何运行python脚本)

阅读(18)

本文主要为您介绍脚本模式Python,内容包括如何运行python脚本,如何运行python脚本,python脚本式编程怎么使用方法。Python安装好以后,在开始菜单会看到一个idle工具(一个增强的交互命令行解释器窗口)以及一个自带的编辑器。在任意目录新建一个

资讯

python中matlab(Python跟Matlab有什么区别和联系呢)

阅读(26)

本文主要为您介绍python中matlab,内容包括Python跟Matlab有什么区别和联系呢,怎么用python调用matlab,怎么用python调用matlab?。联系:可以使用python语言开发Matlab软件使用的程序。区别:指点不同Python:是一种跨平台的计算机程序设计语言。2

资讯

python开发app服务器(如何用python开发移动App后台)

阅读(21)

本文主要为您介绍python开发app服务器,内容包括python可以开发手机app吗,如何用python开发移动App后台,如何搭建app应用服务器python。使用python开发APP后台要用到tornado框架,因为非阻塞io的原因,性能非常高,特别适合写后端API(App的后端应

资讯

python语音波形(如何使用python实现wave音频文件回放)

阅读(22)

本文主要为您介绍python语音波形,内容包括python问题对一个波形文件做fft,然后怎么获取那些频率分量,如何使用python实现wave音频文件回放,如何使用python实现wave音频文件回放。修改采样点数和起始位置进行不同位置和长度的音频波形分析N=

资讯

pythoncsv读取路径(python怎么读取csv文件)

阅读(21)

本文主要为您介绍pythoncsv读取路径,内容包括python怎么读取csv文件,请教PYTHON读取CSV文件方法,求问python怎么读取csv文件。这两天刚好看到,Python CookBook上有说到。这里是三种读取csv的方法。文件格式是这样的Region,DATE_,RAW_A

资讯

pythonbytes拼接(请问python中这字符串转bytes怎么做算的)

阅读(42)

本文主要为您介绍pythonbytes拼接,内容包括pythonbytes怎么分割成若干个bytes,请问python中这字符串转bytes怎么做算的,python3中如何进bytes串转换成str。字符串类(str)有一个方法encode可以将字符串转换为bytes对象。调用encode方法是,可选

资讯

python版本位数(Python的这几个版本区别)

阅读(28)

本文主要为您介绍python版本位数,内容包括Python的这几个版本区别,如何看python是64位还是32位,python怎么取各个数位的数。系统区别:Download Windows X86 可供电脑系统32位使用。2、Download Windows X86-64 可供电脑

资讯

python中json如何存放字节数组(byte数组怎么存放到Json中传递)

阅读(22)

本文主要为您介绍python中json如何存放字节数组,内容包括byte数组怎么存放到Json中传递,byte数组怎么存放到Json中传递,json数据存为数组。json 是一种很简洁的协议,但可惜的是,它只能传递基本的数型(int,long,string等),但不能传递byte类型。如

资讯

python如何调用mysql(如何使用python连接mysql数据库)

阅读(28)

本文主要为您介绍python如何调用mysql,内容包括如何使用python连接mysql数据库,python怎么使用mysql数据库,如何使用python调用mysql存储过程。你可以访问Python数据库接口及API查看详细的支持数据库列表。不同的数据库你需要下载不同的DB

资讯

脚本模式Python(如何运行python脚本)

阅读(18)

本文主要为您介绍脚本模式Python,内容包括如何运行python脚本,如何运行python脚本,python脚本式编程怎么使用方法。Python安装好以后,在开始菜单会看到一个idle工具(一个增强的交互命令行解释器窗口)以及一个自带的编辑器。在任意目录新建一个

资讯

python中matlab(Python跟Matlab有什么区别和联系呢)

阅读(26)

本文主要为您介绍python中matlab,内容包括Python跟Matlab有什么区别和联系呢,怎么用python调用matlab,怎么用python调用matlab?。联系:可以使用python语言开发Matlab软件使用的程序。区别:指点不同Python:是一种跨平台的计算机程序设计语言。2

资讯

python开发app服务器(如何用python开发移动App后台)

阅读(21)

本文主要为您介绍python开发app服务器,内容包括python可以开发手机app吗,如何用python开发移动App后台,如何搭建app应用服务器python。使用python开发APP后台要用到tornado框架,因为非阻塞io的原因,性能非常高,特别适合写后端API(App的后端应

资讯

python语音波形(如何使用python实现wave音频文件回放)

阅读(22)

本文主要为您介绍python语音波形,内容包括python问题对一个波形文件做fft,然后怎么获取那些频率分量,如何使用python实现wave音频文件回放,如何使用python实现wave音频文件回放。修改采样点数和起始位置进行不同位置和长度的音频波形分析N=

资讯

pythondbn(怎么用RBM模型对图像在python中分类)

阅读(20)

本文主要为您介绍pythondbn,内容包括怎么用RBM模型对图像在python中分类,python的IDLE是什么意思,Python里的flag。DBNs是一个概率生成模型,与传统的判别模型的神经网络相对,用于建立一个观察数据和标签之间的联合分布。二、DBN的训练CD(Cont

资讯

pythonsortedlist(什么是python内置函数sorted)

阅读(2)

本文主要为您介绍pythonsortedlist,内容包括什么是python内置函数sorted,hashtable和SortedList有何区别?,python3.0中sorted函数怎么用。Python对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函数。sort函数和sorte

资讯

pythonjson编码(python如何解析json代码分析)

阅读(1)

本文主要为您介绍pythonjson编码,内容包括python如何解析json代码分析,pythonjson怎么修改json数据,如何在python代码中引用json格式。先import json导入json模块,然后加载json编码如f是读取网页得到的json结构加载:json_r=json.loads(

资讯

pythonsublime设置(如何用sublime运行python)

阅读(2)

本文主要为您介绍pythonsublime设置,内容包括如何用sublime运行python,如何用sublime设置python的开发环境,如何使用sublime编辑器运行python程序。工具/原料SublimeTextPython方法/步骤打开sublimeText,在菜单栏找到Tools>编译系统>新编译

资讯

padavan安装python(anaconda与python什么关系)

阅读(2)

本文主要为您介绍padavan安装python,内容包括老毛子固件在编译的时候怎样加入python,anaconda与python什么关系,padavan华硕怎么安装adbyby。Theano:一个深度学习的开源工具包。Python:一门面抄向对象的、解释型袭的计算机编程(程序设计)语言,由

资讯

win32processpython(怎样使用python查询系统某一进程是否存在)

阅读(2)

本文主要为您介绍win32processpython,内容包括pythonwin32是什么?pythoncom如何理解,怎样使用python查询系统某一进程是否存在,怎样使用python查询系统某一进程是否存在。只需要一小段python代码,就可以解决用python查询判断系统进程是否存

资讯

pythonsslurllib(python报错urllib.error.URLError:)

阅读(2)

本文主要为您介绍pythonsslurllib,内容包括pythonurllib怎么用,pythonurllib,pythonhttplib2urllib区别。jango站点使用django_cas接入SSO(单点登录系统),配置完成后登录,抛出“urlopen error unknown ur