首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Python模块之subprocess

一 简介 在使用Python 开发MySQL自动化相关的运维工具的时候,遇到一些有意思的问题,本文介绍Python的 subprocess 模块以及如何和MySQL交互具体操作,启动 ,关闭 ,备份数据库...执行结果上看,子进程 ping命令并未执行完毕,subprocess.Popen()后面的命令就开始执行了。...同样,如果希望stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。...那么坑爹的问题来了:当你要使用Python的subprocess.Popen实现命令行之间的管道传输,同时数据源又非常大(比如读取上GB的文本或者无尽的网络流),官方文档不建议用wait,同时communicate...自动化运维需求中会有重启/关闭/备份/恢复 MySQL的需求。怎么使用Python的subprocess来解决呢?

1.9K10

自带的 print 函数居然会报错?

原来为了方便维护大家提交上来的脚本任务,运维自己有维护一个统一的脚本,在这个脚本中使用: cmd = 'python /xxx/test.py' os.popen(cmd) 来触发任务,这也是与我在本地...维基百科中我们也可以看出这个异常产生的一些条件: 其中也提到了 SIGPIPE 信号。...解决办法 既然知道了问题原因,那解决起来就比较简单了,主要有以下几个方案: 使用 read() 函数读取管道中的数据,全部读取之后再关闭。...如果不需要子进程中的输出,也可以将 command 的标准输出重定向到 /dev/null。 也可以使用 Python3 的 subprocess.Popen 模块来运行。...父子进程是通过匿名管道进行通信的,当读取端关闭,写入端输出到达管道最大缓存时会收到 SIGPIPE 信号,从而抛出 Broken pipe 异常。 子进程会继承父进程的文件描述符。

68110

Python调用Ant构建根据构建状态来决定命令行退出状态

在使用python执行Ant构建遇到的问题: 使用os.system()调用Ant构建,不论构建成功还是失败(BUILD SUCCESSFUL/BUILD FAILED),命令行的总是正常退出...0代表正常退出) 查阅相关资料,得知python调用系统命令的函数有:os.system、os.popen、commands.getstatusoutput/getstatus/getoutput、subprocess.Popen...没有执行构建直接退出(退出状态为: 1,输出为: 不是内部或外部命令,也不是可运行的程序或批处理文件) 结论:可能是因为Ant命令不是系统命令的缘故 于是查找资料又得知了subprocess的相关函数,subprocess.call...执行命令,并等待命令结束,再返回子进程的返回值 subprocess.check_call (*popenargs , **kwargs )执行上面的call命令,并检查返回值,如果子进程返回非0,则会抛出...CalledProcessError异常,这个异常会有个returncode 属性,记录子进程的返回值。

1K20

pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)

有时候我们需要在程序里执行一些cmd命令,使用os或者其它模块中的popen方法去执行 这个问题一般是程序内有输入导致的,这个输入可以是input(),也可以是其它的一些stdin操作(os.popen...实际上会造成输入请求) 本质上就是:使用-w参数(无控制台)打包程序里不要请求输入 或者,你也可以不用-w参数,手动隐藏控制台!...subprocess官方文档:https://docs.python.org/2/library/subprocess.html 懒得看解释可以直接跳过下面这段,直接看解决方法 args 是一个字符串(cmd...请看下列示例: proc = subprocess.Popen( 'cmd命令', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT...命令的输出结果了 稍微封装一下,就可以直接拿来用了 def execute_cmd(cmd): proc = subprocess.Popen( cmd, shell=True,

3.6K30

python中用来抛出异常的关键字是( )_python异常抛出

客户端无法连接到服务端,无法解析服务端返回的数据,读取… 否则可能无法正常调用,抛出连接超时的异常。...语句,匹配成功后异常处理结束,没有发生异常将匹配else语句,程序结束; 但不管程序是否抛出异常finally语句始终会被执行。...,从而抛出异常(表示一个错误)1.2 异常捕捉当程序出现异常,如果不处理则会终止程序的运行,如果不想在发生异常终止程序,则需要使用try来捕捉它,先来看最简单的使用方法:1 name = minutesheep...程序开发,很难将 所有的特殊情况 都处理的面面俱到,通过 异常捕获 可以针对突发事件做集中的处理,从而保证程序… 如果key 已存在, 重复注册抛出异常, 具体情况具体分析注销有注册就应该有注销,字典中移除...input cmd >> pyt 5python 5 100please input cmd >> pyt 48python 4 8 … 抛出异常后,就可以按照前面介绍的try来处理异常

1K100
领券