当前位置: 首页 > 面试题库 >

从Python的os.system()中的命令重定向stdio

夏祯
2023-03-14
问题内容

通常,我可以通过更改的值来更改Python中的stdout
sys.stdout。但是,这似乎只影响print语句。因此,有什么办法可以抑制通过os.system()Python中的命令运行的程序的输出(至控制台)?


问题答案:

您可以考虑通过subprocess.Popen进行subprocess.PIPE通信来运行该程序,然后将该输出推到您想要的任何位置,但是照原样,os.system只运行命令,而没有其他操作。

from subprocess import Popen, PIPE

p = Popen(['command', 'and', 'args'], stdout=PIPE, stderr=PIPE, stdin=PIPE)

output = p.stdout.read()
p.stdin.write(input)

我认为更加灵活。您可能需要查看完整的文档:Python
Subprocess模块



 类似资料:
  • 我想为我的服务器做一些简单的日志记录,它是一个运行在Docker容器中的小Flask应用程序。 这是Dockerfile 正如您在最后一行中看到的,我将stderr和stdout重定向到一个文件。现在我运行这个容器并将外壳放入其中 并观察以下事情: 服务器正在运行,网站正在运行 没有 产生: 但是没有日志...然而,如果我到容器,我可以看到应用程序在控制台中生成输出。 使用Docker时如何正确重

  • 问题内容: 我想为服务器做一些简单的日志记录,这是一个在Docker容器中运行的小型Flask应用程序。 这是Dockerfile 正如您在最后一行看到的那样,我将stderr和stdout重定向到文件。现在我运行这个容器并将其装入其中 并注意以下几点: 服务器正在运行,网站正在运行 没有 产量: 但是没有日志…但是,如果我进入容器,则可以在控制台中看到该应用程序正在生成输出。 使用Docker时

  • 问题内容: 我想知道是否有可能找出PID设置为的“命令”。当我说命令时,我的意思是您在Linux shell中运行命令“ top”时在最后一栏中看到的内容。当我具有特定的PID时,我想以某种方式从Python获取此信息。 任何帮助都会很棒。谢谢。 问题答案: 请不要在生产代码中使用文件系统。而是使用定义明确的POSIX接口,例如glibc调用和标准的shell命令!使Linux世界更加标准化,这确

  • 问题内容: 我在Python中使用脚本来显示控制台进度条。但是,我必须调用将消息也发送到控制台且不能更改的函数。通常,在控制台中显示进度条时写入控制台会使显示混乱,如下所示: 这将创建输出: 根据该方法的文档,提供了一种在不中断显示的进度条的情况下将消息写入控制台的方法。因此,此代码段提供了正确的输出: 看起来像这样: 另一方面,存在这种[解决方案,该解决方案允许通过相当优雅地重定向到void中来

  • 问题内容: 我正在尝试从go调用git日志,并将输出重定向到给定的文件。 失败于 直接在bash中执行命令没有问题。 问题答案: Go的行为类似于C 和启动新程序的过程。这 并不是 隐式调用Shell,从安全性的角度来看,这是一件非常好的事情。不必要的外壳程序调用通常会导致命令注入漏洞。 如果您 想要 外壳程序可以添加的功能(此处为重定向和复合命令语法),但又想避免安全风险,请从代码中将数据带外传

  • 问题内容: 我正在尝试从我的Go代码运行一个相当简单的bash命令。我的程序写出了IPTables配置文件,我需要发出命令以使IPTables从该配置刷新。在命令行中,这非常简单: 但是,我终生无法弄清楚如何使用exec.Command()发出此命令。我尝试了一些方法来实现此目的: 毫不奇怪,这些都不起作用。我还尝试通过管道将文件名输入标准输入来将文件名输入命令: 这也不起作用,不足为奇。我 可以