subprocess.call 没有等待

subprocess.call is not waiting

with open('pf_d.txt', 'w+') as outputfile:
        rc = subprocess.call([pf, 'disable'], shell=True, stdout=outputfile, stderr=outputfile)
        print outputfile.readlines()

output.readlines() 正在返回 [],即使文件中写入了一些数据。这里有问题。

看起来 subprocess.call() 没有阻塞,文件正在读取函数之后写入。我该如何解决?

with open('pf_d.txt', 'w+') as outputfile: 构造称为上下文管理器。在这种情况下,资源是由 handle/file 对象 outputfile 表示的文件。上下文管理器确保在上下文 left 时关闭文件。关闭涉及刷新,然后重新打开文件将显示其所有内容。因此,解决您的问题的一种方法是在文件关闭后 阅读您的文件:

with open('pf_d.txt', 'w+') as outputfile:
    rc = subprocess.call(...)

with open('pf_d.txt', 'r') as outputfile:
    print outputfile.readlines()

另一种选择是在刷新和查找之后重新使用同一个文件对象:

with open('pf_d.txt', 'w+') as outputfile:
    rc = subprocess.call(...)
    outputfile.flush()
    outputfile.seek(0)
    print outputfile.readlines()

文件句柄始终由文件指针表示,指示文件中的当前位置。 write() 将此指针转发到文件末尾。 seek(0) 将其移回开头,以便后续 read() 从文件开头开始。