我要像這樣運行蟒蛇2.3如何運行一個管道命令
grep -w 1 pattern <(tail -f mylogfile.log)
從一個Python腳本我想監視特定字符串的日誌文件,並儘快與python腳本繼續
基本命令正如我發現的那樣。
我正在使用os.system()
,但這是懸掛。 bash中的相同命令行之有效。
我有一個非常舊的版本的Python(V2.3),所以沒有子流程模塊。
做,我們有辦法達致這
我要像這樣運行蟒蛇2.3如何運行一個管道命令
grep -w 1 pattern <(tail -f mylogfile.log)
從一個Python腳本我想監視特定字符串的日誌文件,並儘快與python腳本繼續
基本命令正如我發現的那樣。
我正在使用os.system()
,但這是懸掛。 bash中的相同命令行之有效。
我有一個非常舊的版本的Python(V2.3),所以沒有子流程模塊。
做,我們有辦法達致這
在Python 2.3,你需要使用subprocess
from SVN
import subprocess
import shlex
subprocess.call(shlex.split("/bin/bash -c 'grep -w 1 pattern <(tail -f mylogfile.log)'"))
要明確,你需要從上面SVN鏈接的安裝。
您需要/bin/bash -c
調用這個由於你使用
如果你想與os.system()
來解決這個問題,只是在/bin/bash -c
包裹的命令,因爲你正在使用shell重定向...
os.system("/bin/bash -c 'grep -w 1 pattern <(tail -f mylogfile.log)'")
再次,我沒有子進程,不能在我當前的環境中下載任何新模塊:-( – 2012-07-30 12:00:45
不是能夠下載是新的信息,這將是很好的知道......雖然我不知道要在'vi'中將'subprocess.py'複製到一個文件是多麼困難,因爲你可能通過ssh' – 2012-07-30 12:01:46
訪問它這次似乎很有用。感謝名單。 – 2012-07-31 09:59:23
如果我理解正確的話,你想輸出發送到Python這樣的 -
tail -f mylogfile.log | grep -w 1 pattern | python yourscript.py
即閱讀所有的更新日誌文件,將匹配行發送到您的腳本。
要從標準輸入讀取,可以使用文件類對象:sys.stdin。
所以你的腳本會是什麼樣子
import sys
for line in sys.stdin.readlines():
#process each line here.
首先,命令我認爲你應該使用是grep -w -m 1 'pattern' <(tail -f in)
在Python中執行命令,使用POPEN構造從子模塊。更多詳情 http://docs.python.org/library/subprocess.html
你可以嘗試'commands'模塊,b至少有一個人應該給予簡單的答案 - 升級到較新版本的python;) – mgilson 2012-07-30 12:29:06
大概他有和升級python一樣的問題,因爲他從[SVN]提取['subprocess.py'](http:// svn。 python.org/view/%2acheckout%2a/python/tags/r255/Lib/subprocess.py) – 2012-07-30 12:34:31