当前位置: 首页 > news >正文

怎么做视频还有网站吗最近韩国电影片

怎么做视频还有网站吗,最近韩国电影片,二级域名分发站免费,在网站上保存网址怎么做2019独角兽企业重金招聘Python工程师标准>>> 概述 在上一篇文章(http://blog.csdn.net/styshoo/article/details/48755905)中,我们了解了python执行命令行的几种方法。然而,之前介绍的方法中,却无法进行交互…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

概述

  在上一篇文章(http://blog.csdn.net/styshoo/article/details/48755905)中,我们了解了python执行命令行的几种方法。然而,之前介绍的方法中,却无法进行交互式地调用,即命令只能一次执行,执行之后就结束了。如果我们需要交互式地调用,如调用一个命令,在此过程中间断性的输入输出,那么之前的方法就不适合使用了。想要达到这个目的,就必须使用管道了。
  在python中,有两种使用管道的方法,一种是前文中提到的popen,不过该函数已经在2.6版本中被建议弃用了,取代它的就是马上会提到的第二种方法:subprocess模块。

使用

  subprocess模块是python2.4新加入的模块,而加入该模块的目的,正是为了替代上文中提到的那些模块或函数:os.system、os.spawn、os.popen、popen2和commands等。subprocess模块使用管道是通过该模块的Popen类来实现。

class 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) 

  创建该类时就生成了一个管道,要通过管道交互,可再直接通过该管道的stdout和stdin对象来实现。然而,默认情况下,subprocess只在子进程结束时才会读取一次标准输出。因此,我们需要将标准输出改为非阻塞的模式。这里,我们以在“sh”下执行ls命令来模拟(真实情况下肯定不会这么简单啦)。

import subprocess
import fcntl, os
import timepipe = subprocess.Popen("sh", stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)flags = fcntl.fcntl(pipe.stdout, fcntl.F_GETFL)
fcntl.fcntl(pipe.stdout, fcntl.F_SETFL, flags | os.O_NONBLOCK)pipe.stdin.write("ls \n")
pipe.stdin.flush()time.sleep(2)
out = pipe.stdout.read()print out

进阶

  在上面的代码中,在从输出读数据之前,有一个休眠两秒的操作。之所以这样,是因为这里所有的操作都是针对子进程的,在主线程中并不会等待。如果没有这个休眠操作,那么就会在执行输入的ls操作同时,就直接尝试从输出读取了,这时,很有可能会出现读取异常。试想下,如果向输入写的是“sleep 10; ls”这样的操作,那么就百分百会出现读取异常了。
  然而,这种休眠操作并不友好,因为直接写入休眠时间,而实际情况中,我们并不能确认休眠的时间长短。有什么办法可以解决么?当然有,就是类UNIX系统的epoll操作。这里我直接写入代码,有兴趣的同学可以参考下reference来了解详细的情况。

import subprocess
import fcntl, os
import time
import selectpipe = subprocess.Popen("sh", stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)flags = fcntl.fcntl(pipe.stdout, fcntl.F_GETFL)
fcntl.fcntl(pipe.stdout, fcntl.F_SETFL, flags | os.O_NONBLOCK)pipe.stdin.write("sleep 10; ls \n")
pipe.stdin.flush()poll = select.epoll()
poll.register(pipe.stdout.fileno())
epoll_list = poll.poll()
for fd, events in epoll_list:if fd == pipe.stdout.fileno() and select.EPOLLIN & events:out = pipe.stdout.read()print out

转载于:https://my.oschina.net/styshoo/blog/699276

http://www.lbrq.cn/news/2600119.html

相关文章:

  • 深圳百度推广电话seo排名系统源码
  • 手机收藏网站代码视频号视频下载助手app
  • 做违法网站会怎样seo网站推广的主要目的是什么
  • 短视频营销策划方案范文百度关键词优化首选667seo
  • 产品设计工资一般多少seo网站有优化培训吗
  • 秦皇岛海三建设广州seo网站推广公司
  • 阿里巴巴做公司网站磁力屋 最好用
  • 权威的锦州网站建设seo职位招聘
  • 怎么查那些人输入做网站3分钟搞定网站seo优化外链建设
  • 上海网站设计kinglinkwindows优化大师是什么
  • 网站经营性备案百度广告推广价格
  • 网站建设委托外包协议网站权重查询
  • 长沙手机模板建站快排seo软件
  • 页面设计的网站九易建网站的建站流程
  • 铁岭做网站包括哪些中国职业培训在线官方网站
  • 信阳电子商务网站建设单页应用seo如何解决
  • wordpress代码添加文章字段栏目关键词查询优化
  • 天津河西做网站公司百度指数网址
  • 寻找东莞微信网站建设seo先上排名后收费
  • wordpress虚拟3d网站网络推广方案模板
  • 怎样建设有价值的网站小程序开发文档
  • 自己做的网站涉黄阿里指数官网最新版本
  • 免费制作网站和网页成都seo培
  • 建设雅马哈摩托车官网报价及图片网站关键词排名优化
  • 网站建设 软件开发网站搜索引擎优化情况怎么写
  • 自己做网站如何月入3k如何成为app推广代理
  • dw做网站实例项目推广网
  • 美武汉有什么网站建设公司策划营销
  • 开发公司 张庆网站建设排名优化
  • 电脑版和手机版网站怎么做企业网站建设需求分析
  • nordic通过j-link rtt viewer打印日志
  • python学智能算法(三十三)|SVM-构建软边界拉格朗日方程
  • Vue3 defineAsyncComponent() 函数
  • Linux84 SHELL编程:流程控制 前瞻(1)
  • Coze Loop:开源智能体自动化流程编排平台原理与实践
  • 134页PPT华为项目管理之道PPT