首页 / 知识
关于Windows:如何从Python脚本捕获Python解释器和/或CMD.EXE的输出?
2023-04-13 01:13:00

How to capture Python interpreter's and/or CMD.EXE's output from a Python script?如果是,我应该研究哪个librar(y | ies)? 如果您正在谈论的是脚本的"父级" python解释器或CMD.exe,那么不可能,这是不可能的。在每个类似POSIX的系统中(似乎现在您正在运行Windows,并且可能有一些我不知道的怪癖,YMMV),每个进程都有三个流,标准输入,标准输出和标准错误。 Bu默认(在控制台中运行时)将定向到控制台,但是可以使用管道符号进行重定向:
这将脚本a的标准输出流与脚本B的标准输入流联系在一起。在此示例中,标准错误仍归控制台。请参阅Wikipedia上有关标准流的文章。 如果您正在谈论子进程,则可以像这样从python启动它(如果想要双向通信,stdin也可以选择):
有关管理流程的信息,请参见Python子流程模块。为了进行通信,将process.stdin和process.stdout管道视为标准文件对象。 要与管道一起使用,请从lassevk中读取标准输入,建议您执行以下操作:
sys.stdin和sys.stdout是sys模块中定义的如上所述的标准文件对象。您可能还想看看管道模块。 在我的示例中,使用readline()读取数据是一种非常幼稚的获取数据的方式。如果输出不是面向行的或不确定的,则可能要调查轮询,不幸的是,该轮询无法在Windows中运行,但是我敢肯定还有其他选择。 我想我可以为您的问题的第一部分指出一个好的答案。
答案是"是",我个人希望从PEP 343中的示例中删除以下内容-" with"声明文档。
并像这样使用:
它的一个不错的方面是,它可以仅在脚本执行的一部分而不是整个执行范围内有选择地应用,并且即使在其上下文中引发了未处理的异常时,它也仍然有效。如果在首次使用后以附加模式重新打开文件,则可以将结果累积到单个文件中:
当然,以上内容也可以扩展为还将 实际上,您绝对可以,而且同时又美丽,丑陋和疯狂! 您可以用收集输出的StringIO对象替换sys.stdout和sys.stderr。 这里是一个示例,将其另存为evil.py:
运行该程序时,您将看到:
像这样替换sys.stdout / err是所谓的monkeypatching的应用程序。是否对此"支持"的观点可能会有所不同,这绝对是一个丑陋的破解,但是当尝试将外部内容package一两次时,它就节省了我的培根。 已在Linux(而非Windows)上进行了测试,但它也应该可以正常工作。让我知道它是否可以在Windows上运行! 您想要子流程。专门查看17.1.1中的Popen并在17.1.2中进行通信。 您问的是哪种情况? 您是否要捕获从命令行启动的程序的输出? 如果是这样,那么这是执行它的方法:
并读取输出,只需从标准输入中读取。 另一方面,如果您正在程序中执行该脚本或cmd.exe或类似文件,并且想要等到脚本/程序完成并捕获其所有输出,则需要查看一下在您用来启动该外部程序的库调用中,很可能有一种方法可以要求它为您提供某种方式来读取输出并等待完成。 |
最新内容
相关内容
python终端输出乱码怎么解决?
python终端输出乱码怎么解决?,代码,系统,一致,培训,地方,工作,终端,文件,乱码,声明,在命令行终端上工作时,经常会碰到一个头疼的问题就是中文python怎么使用文件夹下的脚本?
python怎么使用文件夹下的脚本?,工作,培训,文件夹,脚本,文件,所在,方法,示例,路径,以上,python中使用文件夹下脚本的方法:将当前的工作目录(即python脚本中有乱码怎么解决
python脚本中有乱码怎么解决,代码,培训,脚本,乱码,中文,下面,英语系,源文件,语句,源码,有时候,在Python脚本里有中文的时候,会报下面的错误:Non-Python脚本如何使用
Python脚本如何使用,培训,脚本,文件,文件名称,路径,命令,下面,窗口,以上,更多,python脚本的使用方法如下:1、首先编写脚本文件,命名成一个.py文Python怎么输出图片且不保存
Python怎么输出图片且不保存,图片,网络,数据,培训,代码,方式,函数,模块,下面,操作系统,python怎么输出图片且不保存的方法:一、输出本地图片使python脚本如何查找文件是否存在
python脚本如何查找文件是否存在,异常,培训,代码,文件,模块,路径,程序,脚本,语句,错误,python脚本查找文件是否存在的方法:1、使用os模块os模Python怎么运行shell脚本
Python怎么运行shell脚本,培训,命令,文件,方法,脚本,文件夹,对象,建议,结果,内容,Python作为一门脚本语言,有时候需要与shell命令交互式使用,在python如何输出不回车换行
python如何输出不回车换行,工作,培训,结果,两个,引号,当中,同行,下面,以上,需求,下面来说说python如何做到输出换行:常用的转义符方式:\n#-*-cPython控制台输出乱码问题怎么解决
Python控制台输出乱码问题怎么解决,通用,培训,乱码,控制台,问题,字符串,源码,以上,原因,文件,python控制台输出乱码问题解决方法:乱码原因:源码python脚本怎么自动生成文件
python脚本怎么自动生成文件,工作,名字,通用,培训,文件,脚本,内容,参数,关系,中将,python脚本自动生成需要文件在工作中我们经常需要通过一个如何写一个python脚本
如何写一个python脚本,项目,代码,设计,培训,平台,脚本,字符串,用户,类型,函数,python是一种跨平台的计算机程序设计语言。是一种面向对象的动python怎么输出数字
python怎么输出数字,数字,名称,培训,变量,除法,整数,赋值,表达式,结果,浮点,python数字运算Python解释器可以作为一个简单的计算器:您可以在解