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()没有阻塞,并且在读取函数之后正在写入文件。我该如何解决这个问题?
答案 0 :(得分:3)
with open('pf_d.txt', 'w+') as outputfile:
构造称为上下文管理器。在这种情况下,资源是句柄/文件对象outputfile
表示的文件。当上下文左时,上下文管理器确保文件已关闭。关闭意味着刷新,然后重新打开文件将显示其所有内容。因此,解决您的问题的一个选项是在关闭之后读取您的文件
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()
从文件的开头开始。