【问题标题】:Redirecting command output to a string - Python 3.4.3 - Not working on the new version将命令输出重定向到字符串 - Python 3.4.3 - 不适用于新版本
【发布时间】:2015-06-25 13:15:29
【问题描述】:

我正在使用 Python 3.4.3。我想做的是,将 cmd 命令的输出存储到变量中,而不将其打印到命令行中。 Here 我找到了答案,但它适用于旧版本,但在 3.4.3 上,变量“var”包含一些随机字符。例如,如果我尝试使用命令“dir”来测试它,它会打印出一团糟。

import subprocess
from subprocess import Popen, PIPE
var = subprocess.Popen(COMMAND, stdin = PIPE, stdout = PIPE, stderr = PIPE).communicate()[1]
print(var)

【问题讨论】:

    标签: python windows string command output


    【解决方案1】:

    如果我理解得很好,您只想运行一个外部命令并将输出放入一个变量中。

    import subprocess
    
    def foo():
        return subprocess.Popen(COMMAND.split(), stdout=subprocess.PIPE).communicate()[0]
    

    来自子流程文档:

    Replacing /bin/sh shell backquote
    ---------------------------------
    output=`mycmd myarg`
    ==>
    output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0]
    

    请注意,COMMAND.split() 有点……棘手。例如:

    var1 = subprocess.Popen(['echo', '"Hey', 'StackOverflow!"'], stdout=subprocess.PIPE).communicate()[0]
    # String contained in var1: "Hey StackOverflow!"\n
    var2 = subprocess.Popen(['echo', 'Hey StackOverflow!'], stdout=subprocess.PIPE).communicate()[0]
    # String contained in var2: Hey StackOverflow!\n
    var1 != var2
    # True
    

    【讨论】:

      【解决方案2】:

      【讨论】:

        猜你喜欢
        • 2023-03-30
        • 2012-11-21
        • 2017-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-09
        • 1970-01-01
        相关资源
        最近更新 更多