【问题标题】:How to use subprocesses.call and pipe one output to a txt file? [duplicate]如何使用 subprocesses.call 并将一个输出通过管道传输到 txt 文件? [复制]
【发布时间】:2017-08-09 15:50:19
【问题描述】:

涉及其他脚本,所以我不知道如何向所有 tino 提出这个问题。

现在我有这个命令,

 subprocess.call(['python2.7', 'cello_client.py', 'get_results',
                  '--jobid','pythonTest4', '--filename',
                  'pythonTest4_dnacompiler_output.txt','>','out.txt'])

应该将输出推送到文本文件 out.txt,但它不这样做。有什么建议吗?

【问题讨论】:

    标签: python python-2.7 subprocess pipe


    【解决方案1】:

    > 是一个 shell 重定向命令,但您没有通过 shell 运行。你可以做 shell 会做的事情:打开文件并将其附加为程序的stdout

    subprocess.call(['python2.7', 'cello_client.py', 'get_results',
        '--jobid','pythonTest4', '--filename',
        'pythonTest4_dnacompiler_output.txt'],
        stdout=open('out.txt', 'wb'))
    

    您可以使用不同的子进程命令将stdout 直接读入内存:

    proc = subprocess.Popen(['python2.7', 'cello_client.py', 'get_results',
        '--jobid','pythonTest4', '--filename',
        'pythonTest4_dnacompiler_output.txt'])
    out_text, err_text = proc.communicate()
    return_code = proc.returncode
    

    【讨论】:

    • 这很好用,非常感谢!我有一个后续问题。一旦我写入这个文本文件,我就打开它并读入它,然后关闭文件。有没有办法编辑上面的命令来简单地将输出保存为我的程序中的字符串?
    • 更新为显示Popen.communicate
    猜你喜欢
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2019-01-24
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多