构建一个 python fuse fs,在我的 readdir 生成器中,第一行代码是一个打印语句。这从未出现在我的控制台上。我将其修改为打印到 stderr,因为我认为这是一个缓冲问题。还是没有输出。
我在下一行添加了手动刷新 - 仍然没有。
我在下一行添加了 time.sleep(3),程序确实在睡觉。
def readdir(self, path, offset):
print >> sys.stderr, 'Text'
sys.stderr.flush()
time.sleep(3)
然后我继续用其他代码填充目录(yield fuse.Direntry)我确实得到了输出,并且可以在终端中执行 ls 来查看我安装的 fuse 目录的内容,但我想知道为什么打印命令没有不能在这台发电机上工作。
更新
对于那些正在苦苦挣扎的人:
def readdir(self, path, offset):
print >> sys.stderr, 'Text'
sys.stderr.flush()
for o in os.listdir( "." + path ):
yield fuse.Direntry(o)
是代码。它会生成一个文件列表,我可以在它周围移动。没事儿。问题是我从未在任何地方看到“文本”出现,而不是在 STDOUT、STDERR 中。
我只是在问为什么这只发生在这个生成器中。我可以在保险丝代码的其他地方打印并很好地得到输出。