为子进程写入文件输入

时间:2016-02-03 14:28:57

标签: python file subprocess

我需要在一个循环中调用一个例程,它接受一个文本文件作为输入。因为我不想打开和关闭文本文件,所以我一直在循环中打开它。例如:

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

但该文件仍处于旧状态。为什么?最新的处理方式是什么?

2 个答案:

答案 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)引用该文件时,您会看到最新的版本