我正在尝试对 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])
