【问题标题】:execute awk (which redirects output to file) from python从python执行awk(将输出重定向到文件)
【发布时间】:2021-07-21 05:13:07
【问题描述】:

以下 awk 命令将文件名附加到日志文件的每一行

awk '{print FILENAME " " $0}' progress.log > progress_temp.log

如何从 python 执行这个 awk 命令

能够执行以下命令 subprocess.run(["awk", "{print FILENAME \" \" $0}", "progress.log"]) 但它不会将输出重定向到 progress_temp.log 并且不想在 python 中处理该部分。

【问题讨论】:

标签: python bash awk


【解决方案1】:

出于您的目的,使用os.system 可能是最简单的:

import os

status = os.system("awk '{print FILENAME  \" \"   $0}' progress.log > progress_temp.log")

这样,shell 将解析命令并为您处理重定向。返回值是退出状态(在 Unix 上)

【讨论】:

    【解决方案2】:

    您可以指定stdout 参数以将输出保存到特定文件中:

    import subprocess
    with open('progress_temp.log', 'w') as fw:
        subprocess.run(["awk", "{print FILENAME \" \" $0}", "progress.log"], stdout=fw)
    

    【讨论】:

    • @TomKarzes 现在不会了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多