回答
如果你真的想要一個任意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