回答
如果你真的想要一个任意Python表达式的输出传递到外部命令,你将需要开始一个过程并使用管道。在bash中,一个管拼写为|
,在Python中,subprocess模块可以帮助你。但如果你只需要你给的例子,eumiro和Jon Clements的答案就是你需要的。
print many_lines_message.splitlines()[-1]
如果要模拟head
,tail
和/或grep
命令,很容易与切片和/或列表内涵。
如果你想做一些不同的事情,给我们更多的例子。得到一个迭代的最后一个元素(一个或多个)
一种方法是使用一个deque
:
from collections import deque
last_item = deque(your_message, maxsize=1)[0]
'deque'构造函数在我的机器(Python 2.7和Python 3.2)中不接受关键字'maxsize'。这是对的吗? – brandizzi 2012-07-18 13:34:19
我摆弄@ eumiro的解决方案,因为我认为它可能太慢,尾巴可以更有效。实际上,速度要慢得多,但仍然不是很重要。虽然tail -1
消耗此时:
$ seq 1 10000000 > f
$ time tail -1 f
10000000
real 0m0.003s
user 0m0.000s
sys 0m0.000s
的Python版本消耗高达200倍以上的时间:
>>> #message = "\n".join(str(i) for i in range(0, 10000000))
>>> %timeit message.splitlines()[-1]
1 loops, best of 3: 679 ms per loop
当然,这并不是说相关:你甚至不会看到多少时间它因为半秒钟几乎感觉不到。总结起来,eumiro的解决方案是的解决方案。
但是,它可以成为一些文件,比如大的日志太慢,所以更快的Python的解决方案可以帮助:
>>> %timeit message.rsplit('\n', 1)[-1]
10 loops, best of 3: 50.7 ms per loop
在这种情况下,我使用rsplit()
,这将在分割字符串每个'\n'
char从开始到结束都只有一次。也就是说,它会将字符串分成两个字符串,一个包含除最后一行之外的所有消息,以及最后一行本身。然后,我得到-1
索引的最后一行。
这么好的工作!:) – scythargon 2012-07-17 14:25:33
- 1. 如何在bash中垂直替换控制台输出
- 2. 如何在C#中使用垂直制表符实现选项卡控件?
- 3. 如何在Python中实现链操作?
- 4. 如何在Python中实现调试控制台?
- 5. Bash - 如何区分控制操作符与元字符?
- 6. 如何制作垂直TabControl?
- 7. 实现垂直UIScrollView
- 8. 如何实现openTK的垂直滚动条gameWindow
- 9. RichTextBox在visual studio中的垂直滚动条操作
- 10. 字符串操作控制台不表现为
- 11. System.out如何实现字符的控制台输出?
- 12. 如何在条形图上制作垂直转角?
- 13. 控制台中的Java Connect Four - 水平和垂直获胜条件
- 14. Ruby和Python如何实现其交互式控制台?
- 15. 在Chrome中使用实况或控制台执行CSS操作?
- 16. 制作android EditText垂直滚动条
- 17. Android的垂直动作条
- 18. 如何为我的div制作垂直滚动条?
- 19. 在asp.net中的css垂直制表符
- 20. 如何实现字符串操作?
- 21. 如何在WPF中实现时尚的垂直菜单?
- 22. 如何在android的弹出窗口中实现垂直滚动?
- 23. 如何使用Datatemplate在ListView中实现自动垂直滚动条?
- 24. 如何在.NET Core控制台应用程序中实现MVVM?
- 25. 如何在控制台应用程序中实现MVP?
- 26. 如何在许多控制器的许多操作中实现一些代码
- 27. MobileFirst操作分析控制台 - 未链接到MobileFirst Admin操作控制台
- 28. 控制台中的奇怪字符Python
- 29. 如何在C#中实现malloc操作#
- 30. 如何在Pascal中实现Matrix操作?
这就是我需要的,非常感谢! – scythargon 2012-07-17 14:26:29