filename = 'tempfile'
def tail(filename):
fd = open(filename)
while True:
line = fd.readline()
if not line:
continue
else:
if filename != 'uh':
yield line
else:
print 'Returning f to close the file'
yield fd
try:
genObj = tail(filename)
valfromgen= genObj.next()
while valfromgen:
print valfromgen
valfromgen= genObj.next()
except:
traceback.print_exc()
try:
fd_Got_Back = genObj.send('uh')
fd_Got_Back.close()
except:
traceback.print_exc()
代码的意图:我只在生成器函数中打开了文件,而不是在它之外,但是,我想通过使用“发送”来关闭生成器函数之外的文件。
我正在尝试做的事情:tail -f
从 unix 复制。
我想怎么做:
- 以读取模式打开临时文件。
- 如果临时文件中写入了 1 个新行(我将继续手动编写并使用记事本保存临时文件),则生成新写入的行。
问题:
问题是我正在尝试检查如何在此 Python 代码在命令提示符下运行时按Ctrl+ C (即 SIGTERM)关闭此 Python 代码中打开的临时文件。为了模拟这一点,我在tail
函数中打开了临时文件,每当出现异常(当我按下+时系统将引发异常)CtrlC时,控件应该在第一个除外。然后,从这里开始,我尝试向uh
生成器函数发送一个值tail
,以便它产生打开的文件的文件描述符,我可以使用它来关闭打开的临时文件。
PS:我希望有一个解决方案,我只在生成器函数中而不是在它之外打开文件。