【问题标题】:Python subprocess bash command with output file blocked输出文件被阻止的 Python 子进程 bash 命令
【发布时间】:2016-02-24 00:28:44
【问题描述】:

我有以下代码运行LM_CMD 程序并将输出写入文件fp_arpa。在那之后,我有另一个函数可以读取和处理该文件 (fp_arpa)。但是,根据函数,文件是空的,而在文件系统中则不是。我猜 subprocess 会锁定文件指针,直到整个 Python 程序完成(虽然我可能错了)。我怎样才能避免这个问题?

base_cmd = '%s -lm %s' % (LM_CMD, fp_arpa)
subprocess.Popen([base_cmd], shell=True)
some_function_that_processes(fp_arpa)

【问题讨论】:

    标签: python file python-2.7 subprocess


    【解决方案1】:

    subprocess.Popen 在进程启动后立即返回。它不会等待过程完成。请致电subprocess.check_call()

    #!/usr/bin/env python
    import subprocess
    
    subprocess.check_call([LM_CMD, '-lm', fp_arpa])
    

    【讨论】:

    • 非常感谢。出于某种原因,我认为程序会等到 subprocess.Popen 完成。
    猜你喜欢
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    相关资源
    最近更新 更多