【问题标题】:Python run commands in one instance of CMDPython 在一个 CMD 实例中运行命令
【发布时间】:2019-09-18 00:23:35
【问题描述】:

我有这个代码:

import os

os.system('set x=5')
os.system('echo %x%')

当我这样做时,我希望将5 输出到屏幕上,但我却得到了%x%。我认为这是因为这两个命令正在 2 个不同的命令提示符实例上运行。如果有人可以提供帮助,将不胜感激!

【问题讨论】:

  • os.system('set x=5 && echo %x%')?
  • 但假设我想从 2 个单独的命令中执行此操作,我会怎么做?

标签: python windows command-line


【解决方案1】:

似乎“set”命令应该替换为python中的“os.environ”方法。 这样就可以设置环境变量了。

import os
os.environ['x'] = "5"
os.system('echo %x%')

#result is "5"

我认为这是实现目标的最简单方法。 希望这可以帮助你:)

【讨论】:

  • 感谢您的回复,但正如我上面所说,我想通过 2 个单独的命令来完成。我给出的例子是我希望做的简化版本。
  • @Pokechu48 感谢您的快速反馈。我改变了我的回复。我认为您应该在“os.system”方法中使用“os.environ”而不是使用“set”命令。
【解决方案2】:

不完全建议这样做,但如果您真的想以编程方式与控制台交互,以模拟您通常执行的方式,您可以操作 stdin 和 stdout 缓冲区。 subprocess 模块在 python 中有一些工具。

import subprocess

p = subprocess.Popen('cmd.exe', stdin=subprocess.PIPE, stdout=subprocess.PIPE, universal_newlines=True)
p.stdin.write('set x=5\n')
p.stdin.write('echo %x%\n')
print p.communicate()[0]
p.terminate()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-16
    • 2012-04-10
    • 2022-10-21
    • 2017-06-16
    • 2011-12-24
    • 1970-01-01
    • 2021-08-19
    • 2011-07-12
    相关资源
    最近更新 更多