我创建一个 fifo:
mkfifo tofetch
我运行这个Python代码:
fetchlistfile = file("tofetch", "r")
while 1:
nextfetch = fetchlistfile.readline()
print nextfetch
正如我所希望的那样,它停在读取线上。我跑:
echo "test" > tofetch
我的程序不再停滞了。它读取该行,然后继续永远循环。为什么没有新数据时它不会再次停止?
我还尝试查看“not fetchlistfile.angled”,我不介意在每次写入后重新打开它,但Python认为fifo仍然是打开的。
根据文档readline http://docs.python.org/library/stdtypes.html#file.readline,当且仅当您位于文件末尾时,它才返回空字符串。关闭与文件结束不同。仅当调用 .close() 时,文件对象才会关闭。当代码到达文件末尾时,readline() 不断返回空字符串。
如果你只使用文件对象作为迭代器,Python 将自动一次读取一行并在文件末尾停止。像这样:
fetchlistfile = file("tofetch", "r")
for nextfetch in fetchlistfile:
print nextfetch
The echo "test" > tofetch
命令打开命名管道,向其中写入“test”,然后关闭管道的末端。因为管道的写入端是关闭的,所以读取端看到的是文件结尾。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)