gpt4 book ai didi

python - 需要使用子进程模块在 2 个 NamedTemporaryFiles 上运行 diff 命令

转载 作者:太空宇宙 更新时间:2023-11-04 07:40:18 25 4
gpt4 key购买 nike

我正在尝试对 2 个命名的临时文件运行 diff,我没有使用 difflib,因为它的输出与 linux diff 不同。当我运行这段代码时,它没有输出任何东西。我在常规文件上尝试了 diff,效果很好。

#using python 2.6
temp_stage = tempfile.NamedTemporaryFile(delete = False)
temp_prod = tempfile.NamedTemporaryFile(delete = False)
temp_stage.write(stage_notes)
temp_prod.write(prod_notes)

#this does not work, shows no output, tried both call and popen
subprocess.Popen(["diff", temp_stage.name, temp_prod.name])

#subprocess.call(["diff", temp_stage.name, temp_prod.name])

最佳答案

您需要通过调用flush() 强制将文件写出到磁盘;否则您写入文件的数据可能仅存在于缓冲区中。

事实上,如果您这样做,您甚至可以使用 delete = True,前提是没有其他理由保留这些文件。这保留了使用临时文件的好处。

#!/usr/bin/python2
temp_stage = tempfile.NamedTemporaryFile(delete = True)
temp_prod = tempfile.NamedTemporaryFile(delete = True)
temp_stage.write(stage_notes)
temp_prod.write(prod_notes)

temp_stage.flush()
temp_prod.flush()

subprocess.Popen(["diff", temp_stage.name, temp_prod.name])

关于python - 需要使用子进程模块在 2 个 NamedTemporaryFiles 上运行 diff 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23224048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com