【问题标题】:How to store multiple stdout results in a variable?如何将多个标准输出结果存储在一个变量中?
【发布时间】:2014-05-27 11:50:56
【问题描述】:

这些是我在 Python 3.4 中的第一步,而且我已经很久没有编程了。

我有一个 Linux 操作系统命令,它在标准输出上每行返回多个但一个结果。

捕获这些结果以进行进一步处理的最佳选择是什么?我认为理想情况下是将每个结果行存储在单独的表条目中。但也许你有更好的想法。

【问题讨论】:

    标签: python python-3.x stdout


    【解决方案1】:

    如果你通过调用命令

    sp = subprocess.Popen(['command', 'arg1', 'arg2'], stdout=subprocess.PIPE)
    

    你可以的

    for line in sp.stdout:
        do_stuff_with(line)
    

    【讨论】:

    • 非常感谢您。我仍然必须弄清楚如何修改字符串,因为我在结果中得到了一些不需要的标记,例如“b'”和“\n'”,但是您提供的解决方案是完美的。谢谢!
    • @K-K 通过遍历文件对象,产生行,每行都以换行符终止(\n)。这很正常。但是,b 在您的情况下的含义仍不清楚。
    【解决方案2】:

    将标准输出定向到文件:

    'some linux command' > output.txt
    

    然后使用 python 打开和操作很简单:

    with open('output.txt') as my_file:
        content = my_file.readlines()
    

    您必须提供有关您的命令和输出的更多详细信息,以便我提供更具体的建议。

    【讨论】:

    • @glglgl 我的印象是他希望他的命令在 python 之外运行。不确定这是不是真的,但如果可能的话,绝对会更好。
    • 如果我不够精确,我很抱歉。还是要谢谢你的帮助。我使用外部命令(Linux 命令)在文件系统中搜索特定类型的文件。结果,它会一一生成文件的路径。我的 Python 程序应该捕获这些行并对其进行处理。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2022-07-29
    • 1970-01-01
    • 2016-07-03
    相关资源
    最近更新 更多