我需要在一个循环中调用一个例程,它接受一个文本文件作为输入。因为我不想打开和关闭文本文件,所以我一直在循环中打开它。例如:
with open("test.txt",'r+') as w_file:
w_file.write(str(0.8) + "\n" + str(0.2))
subprocess.call(["cat","test.txt"]) #Here I want to call my routine
但该文件仍处于旧状态。为什么?最新的处理方式是什么?
答案 0 :(得分:3)
您需要在写完后关闭文件。 尝试:
with open("test.txt",'r+') as w_file:
w_file.write(str(0.8) + "\n" + str(0.2))
subprocess.call(["cat","test.txt"]) #Here I want to call my routine
或不关闭,刷新文件
with open("test.txt",'r+') as w_file:
w_file.write(str(0.8) + "\n" + str(0.2))
w_file.flush()
subprocess.call(["cat","test.txt"]) #Here I want to call my routine
答案 1 :(得分:0)
这应该有效:
with open("test.txt",'r+') as w_file:
w_file.write(str(0.8) + "\n" + str(0.2))
w_file.flush()
subprocess.call(["cat","test.txt"])
方法“flush”将文件类对象w_file引用的实际文件与仍在内存中的内容同步,因此当您通过它的名称(而不是w_file FLO)引用该文件时,您会看到最新的版本