回答
如果你真的想要一個任意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. 實現垂直運動控制
- 3. 如何在C#中使用垂直製表符實現選項卡控件?
- 4. 如何在Android中實現垂直ViewPager?
- 5. 如何在Python中實現鏈操作?
- 6. 如何在Python中實現調試控制檯?
- 7. 如何實現垂直滑動操作欄(如在grofers應用程序中)
- 8. Bash - 如何區分控制操作符與元字符?
- 9. 如何製作垂直TabControl?
- 10. 如何在VB.NET中製作垂直選項卡控件?
- 11. 實現垂直UIScrollView
- 12. C#垂直製表符控制
- 13. 如何直接在EmberJS控制器上實現動作?
- 14. 如何在Python中實現shell作業控制基礎?
- 15. 如何實現openTK的垂直滾動條gameWindow
- 16. 如何控制ListView的垂直滾動
- 17. RichTextBox在visual studio中的垂直滾動條操作
- 18. 如何實現在IOS頁面控制水平和垂直滾動
- 19. 字符串操作控制檯不表現爲
- 20. System.out如何實現字符的控制檯輸出?
- 21. Ruby和Python如何實現其交互式控制檯?
- 22. 無法在垂直視圖中實現垂直CircleIndicator尋呼機
- 23. 控制檯中的Qubit交付操作
- 24. 如何在基於控制檯的python程序中實現「last command」功能
- 25. 如何在條形圖上製作垂直轉角?
- 26. 在Chrome中使用實況或控制檯執行CSS操作?
- 27. 控制檯中的Java Connect Four - 水平和垂直獲勝條件
- 28. 如何在asp.net中實現垂直分頁gridview中的C#
- 29. 製作android EditText垂直滾動條
- 30. 在後臺製作純css3中的垂直拆分器
這就是我需要的,非常感謝! – scythargon 2012-07-17 14:26:29