我想在python中获取控制台上写的最后一个字符。 例如,我可能有多个线程在控制台上写入,然后在每个线程中我需要知道其他线程写入控制台的最后一个字符。有什么办法吗?
e.g:
>> print 'Hello'
在这种情况下,最后一个字符是'\ n'
或
Thread A:
>>> print 'Hello'
Thread B:
>>> print 'Bye'
Thread C:
>>> What is the last written character?
很明显,除非我们以某种方式询问控制台,否则我们无法在线程C中确定答案。
答案 0 :(得分:1)
取决于您写信的位置。如果您正在写入标准输出sys.stdout
(通常情况下) - 它无法阅读。所以技术上没有。你可以做的是使用输出管道输出到其他人并在stdout已经刷新它之后抓住它。
这是Ubuntu OS下的一个示例,但在任何操作系统中都可能存在等价物:
示例脚本(p.py
):
print "hello"
取最后一个两个字符中的第一个从\n
跳过换行符(print
):
reut@sharabani:~$ python p.py | tail -c2 | head -c1
o
如果您无法访问head
和tail
,则在python中执行此操作应该很简单:
编写脚本take_last_char.py
:
import sys
# read whatever output the previous script piped here
# but only keep the last line (stripping the newline...)
for line in sys.stdin:
tmp = line.strip()
print tmp[-1]
现在只需使用:
python p.py | python take_last_char.py
答案 1 :(得分:0)
除非您在计划中更改end
功能的print
参数,否则它始终为\n
。