这里我们用Windows下的shell来举例: from subprocess import * #因为是举例,就全部导入了 为了方便你理解,我们用一个很简单的一段代码来说明: 可以看见我们利用Popen实例化了一个p,创建了子程序cmd.exe,然后我们给他的的Stdin(标准输入流)Stdout(标准输出流); 同时使用了subprocess.PIPE 作为参数,这个是一个特殊值,用于表明这些通道要开放.(在Python3.5,加入了run()方法来进行更好的操作) 然后我们继续 这些信息是…
from selenium import webdriver browser = webdriver.Firefox() browser.get("https://tieba.baidu.com/index.html") new_list = browser.find_element_by_id('new_list') user_name = browser.find_element_by_name ('user_name') active = browser.find_element…
文件的操作 1   文件的打开操作: 文件句柄 = open('文件路径', '模式') f=open('wangyakun','a+',encoding='utf-8') #文件名, 如果是绝对路径的话要写成 r'c:\user\administrator\'这种形式后边选择的编码方式要选择已保存的文件保存的编码方式,f.write('nihao a ') f.seek(2) seek 这里指的是字节位置如果出现中文就会一个字三个字节位, count=f.readlines() print(c…
进程间通信(IPC InterProcess Communication)是值在不同进程间传播或交换信息. IPC通过有管道(无名管道 和 有名 / 命名管道).消息队列.共享存储 / 内容.信号量.套接字socket.streams,其中socket和streams支持不同主机上的两个进程间通信 1 管道Pipe的基本语法 管道Pipe是multiprocessing中的方法Pipe(),也即multiprocessing.Pipe() multiprocessing.Pipe([duplex…
redis 模块操作剩余其他常用操作 delete(*names):删除任意的数据类型exists(name):检测redis的name是否存在keys(pattern='*'):根据模型获取redis的name keys * 匹配数据库中所有Key keys h?llo:匹配hello,hallo,hxllo等expire(name,time):为redis的某个name设置超时时间rename(src,dst):对redis的name重命名move(name,db):将redis的某个值移动…
在很久以前,我写了一个系列,Python和C和C++的交互,如下 http://blog.csdn.net/marising/archive/2008/08/28/2845339.aspx 目的是解决Python和C/C++的互操作性的问题,假如性能瓶颈的地方用C来写,而一些外围工作用Python来完成,岂不是完美的结合. 今天发现了更方便的方式,就是用subprocess模块,创建子进程,然后用管道来进行交互,而这种方式在shell中非常普遍,比如:cat xxx.file | test.py…
现在有个实时抓包处理的程序,大概的流程是 使用tshark抓包->实时上传,如果写log的话是可以的,但是log文件切割需要定时执行. 由于log中有些内容需要实时处理,延迟时间会导致数据误差,所以想到用类似unix管道的方式,实时处理掉标准输出的内容处理,类似生产消费者模式. 场景解说 简单的流程就是 程序输出内容到stdout--> python pipe--> python 处理程序读取管道内的输出内容,然后后续处理 正常情况下可以用生产者消费者模式或者队列来搞定,但是呢这里最开始…
# -*- coding: utf-8 -*- """ 多进程数据共享 管道Pipe 逻辑: 2个进程,各自发送数据到管道,对方从管道中取到数据 总结: 1.只适合两个进程 2.recv 会阻塞 3.其中一个进程结束了,管道还在,另外一个进程还能使用 4.可以把管道认为一个队列, 发送数据端,往队列写数据 接收数据端,从队列读数据,队列空了阻塞 单向管道 1个队列,双向管道 2个队列 使用: 1. 创建2个管道的两端的对象 pipe_left_conn,pipe_right_…
1.什么是管道 Linux进程间通信方式的一种,管道有两端,读端和写端.创建管道,然后从父进程fork出子进程, 父进程和子进程拥有共同的读写文件描述符,可以实现子进程写文件,父进程读文件的操作. 示意图如下: 2.具体操作 子进程关闭读端,父进程关闭写端,子进程负责写,父进程负责读. 代码示例如下: import os, time, sys pipe_name = 'pipe_test' def child( ): pipeout = os.open(pipe_name, os.O_WRONL…
subprocess 模块 功能:用来生成子进程,并可以通过管道连接它们的输入/输出/错误,以及获得它们的返回值.它用来代替多个旧模块和函数: os.system os.spawn* os.popen* popen2.* commands.* 目的:启动一个新的进程并且与之通信,subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程.注意:在python3中此模块返回的是bytes类型,在python2中返回的是字符串. 以下为一些常用方法: check_outp…
作者:Vamei 出处:http://www.cnblogs.com/vamei subprocess包主要功能是执行外部的命令和程序.subprocess的功能与shell类似.subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用.另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通信. 使用subprocess包中的函数创建子进程的时候,要注意…
[转自]http://blog.sciencenet.cn/blog-600900-499638.html 最近,我们老大要我写一个守护者程序,对服务器进程进行守护.如果服务器不幸挂掉了,守护者能即时的重启应用程序.上网Google了一下,发现Python有很几个模块都可以创建进程.最终我选择使用subprocess模块,因为在Python手册中有这样一段话: This module intends to replace several other, older modules and func…
python笔记之subprocess模块 [TOC] 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn*.os.popen*.popen2.*.commands.*不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息 subprocess的目的就是启动一个新的进程并且与之通信. subprocess模块中只定义了一个类: Popen.…
subprocess 主要功能室执行外部的命令和程序 一个进程可 fork 一个子进程, 并让这个子进程 exec 另外一个程序. 在 python 中, 可以通过标准库中的 subprocess 包来 fork 一个子进程, 并运行一个外部的程序. subprocess 创建子进程的函数, 这些函数分别用不同的方式创建进程. 使用 subprocess 包中的函数创建子进程时, 要注意 : 在创建子进程之后, 父进程是否暂停, 并等待子进程运行, 函数返回什么 当 returncode 不为…
http://www.cnblogs.com/vamei/archive/2012/09/23/2698014.html http://blog.csdn.net/jgood/article/details/4498166 http://docs.python.org/library/subprocess subprocess.call() [root@typhoeus79 20130925]# more test.py #!/usr/bin/env python2.7 #-*- coding:…
python中的subprocess.Popen()使用 从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值.subprocess意在替代其他几个老的模块或者函数,比如:os.system os.spawn* os.popen* popen2.* commands.*一.subprocess.Popensubprocess模块定义了一个类: Popenclass subprocess.Popen( ar…
1.基本概念介绍 我们经常需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的, 每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python2有os.system, 早期的Python版本中,我们主要是通过os.system().os.popen().read()等函数来执行命令行指令的,另外还有一个很少使用的commands模块. 但是从Python 2.4开始官方文档中建议使用的是subprocess模块,所以o…
我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell.那么我们如何通过Python来完成这些命令行指令的执行呢?另外,我们应该知道的是命令行指令的执行通常有两个我们比较关注的结果: 命令执行的状态码--表示命令执行是否成功 命令执行的输出结果--命令执行成功后的输出 早期的Python版本中,我们主要是通过os.system().os.popen().read()等函数来执行命令行指令的,另外还有一个很少使用的commands模块.但是从Python 2…
二.应用实例解析 2.1 subprocess模块的使用 1. subprocess.call >>> subprocess.call(["ls", "-l"])   0   >>> subprocess.call("exit 1", shell=True)   1 2. 调用系统中cmd命令,显示命令执行的结果: x=subprocess.check_output(["echo", &qu…
subprocess--子进程管理器 一.subprocess 模块简介 subprocess最早是在2.4版本中引入的. subprocess模块用来生成子进程,并可以通过管道连接它们的输入/输出/错误,以及获得它们的返回值. 它用来代替多个旧模块和函数: os.system os.spawn* os.popen* popen2.* commands.* 关于这个模块可以取代的旧函数可以参见 subprocess-replacements 一节. POSIX用户(Linux, BSD, etc…
subprocess--子进程管理器一.subprocess 模块简介subprocess最早是在2.4版本中引入的.subprocess模块用来生成子进程,并可以通过管道连接它们的输入/输出/错误,以及获得它们的返回值.它用来代替多个旧模块和函数:os.systemos.spawn*os.popen*popen2.*commands.* 关于这个模块可以取代的旧函数可以参见 subprocess-replacements 一节.POSIX用户(Linux, BSD, etc)还可以安装和使用更…
队列(queue) 队列只在多线程里有意义,是一种线程安全的数据结构. get与put方法 ''' 创建一个“队列”对象 import queue q = queue.Queue(maxsize = 10) queue.Queue类即是一个队列的同步实现.队列长度可为无限或者有限.可通过Queue的构造函数的可选参数maxsize来设定队列长度.如果maxsize小于1就表示队列长度无限. 将一个值放入队列中: q.put() 调用队列对象的put()方法在队尾插入一个项目.put()有两个参数…
从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回值. subprocess意在替代其他几个老的模块或者函数,比如:os.system os.spawn* os.popen* popen2.* commands.* 一.subprocess.Popen subprocess模块定义了一个类: Popen ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class subprocess…
# shell last | cut -d ' ' -f 1 | sort -u #python from subprocess import Popen,PIPE p1 = Popen('last',shell=True,stdout=PIPE) p2 = Popen('cut -d ' ' -f 1,shell=True,stdin=p1.stdout,stdout=PIPE) p3 = Popen('sort -u',shell=True,stdin=p2.stdout,stdout=PI…
在Python中,调用:subprocess.Popen(cmd, stdout = PIPE, stderr = PIPE, shell= true)的时候,如果调用的shell命令本身在执行之后会突然出现很多输出,则这个时候可能会导致hang在那里,表现就是卡死了,程序也不往下走,也不会报错... 原因就是: PIPE本身可容纳的量比较小,所以程序会卡死,所以一大堆内容输出过来的时候,会导致PIPE不足够处理这些内容,因此需要将输出内容定位到其他地方,例如临时文件等,所以.需要将subpro…
整理自网络 Unix IPC包括:管道(pipe).命名管道(FIFO)与信号(Signal) 管道(pipe) 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信: 实现机制: 管道是由内核管理的一个缓冲区,相当于我们放入内存中的一个纸条.管道的一端连接一个进程的输出.这个进程会向管道中放入信息.管道的另一端连接一个进程的输入,这个进程取出被放入管道的信息.一个缓冲区不需要很大,它被设计成为环形的数据结构,以便管…
前言    进程是一个独立的资源管理单元,不同进程间的资源是独立的,不能在一个进程中访问另一个进程的用户空间和内存空间.但是,进程不是孤立的,不同进程之间需要信息的交互和状态的传递,因此需要进程间数据的传递.同步和异步的机制.     当然,这些机制不能由哪一个进程进行直接管理,只能由操作系统来完成其管理和维护,Linux提供了大量的进程间通信机制,包括同一个主机下的不同进程和网络主机间的进程通信,如下图所示: 同主机间的信息交互: 无名管道: 特点:多用于亲缘关系进程间通信,方向为单向:为阻塞…
 无名管道(pipe) 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信: 定义函数: int pipe(int filedes[2]) filedes[0]为管道里的读取端 filedes[1]则为管道的写入端. 实现机制: 管道是由内核管理的一个缓冲区,相当于我们放入内存中的一个纸条.管道的一端连接一个进程的输出.这个进程会向管道中放入信息.管道的另一端连接一个进程的输入,这个进程取出被放入管道的信息.一个缓…
Python中利用原始套接字进行网络编程的示例 在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互. 因此想使用原始套接字进行编程,直接构造数据包,并在IP层进行发送,即采用SOCK_RAW进行数据发送. 使用SOCK_RAW的优势是,可以对数据包进行完整的修改,可以处理IP层上的所有数据包,对各字段进行修改,而不受UDP和TCP的限制. 下面开始构造HTTP数据包, IP层和TCP层使用python的Impacket库,http内容…
QMP是一种基于JSON格式的传输协议,我们能利用它与一个QEMU虚拟机实例进行交互,例如查询,更改虚拟机的状态,获取设备信息等等.下面是几种创建QMP的方法以及对其它的一些基本命令的使用: 1.基于Telnet创建QMP 首先利用如下命令启动一个QEMU虚拟机实例 qemu-system-x86_64 linux-0.2.img -qmp tcp:localhost:4444,server --monitor stdio 然后启动Telnet连接localhost的4444端口 telnet…