A. python 讀取日誌文件
#-*-coding:utf-8-*-
withopen('log.txt','r')asf:
foriinf:
ifdt.strftime(dt.now(),'%Y-%m-%d')ini:
#判斷是否當天時間
if'ERROR'iniand'atcom.mytijian'ini:
#判斷此行中是否含有'ERROR'及'atcom.mytijian'
if((dt.now()-dt.strptime(i.split(',')[0],'%Y-%m-%d%H:%M:%S')).seconds)<45*60:
#判斷時間是為當前45分鍾內
printi
B. python 如何釋放緩存
我覺得可能是因為你的py文件在第一次啟動後,已經編譯成pyc文件了,再次啟動的時候都是載入pyc,省去了編譯的階段,所以速度很快。
你可以試著把程序目錄下的所有pyc或者你的代碼文件對應的pyc文件刪除,看看是不是可以和第一次載入速度相同
C. python有緩存模塊嗎
從Python 3.2開始,可以使用functools庫中的裝飾器@lru_cache。這是最近使用過的緩存,所以其中的項目沒有到期時間,但作為快速入侵,它非常有用。
from functools import lru_cache
@lru_cache(maxsize=256)def f(x):
return x*xfor x in range(20):
print f(x)for x in range(20):
print f(x)
D. python file.readline()的一些疑問真是是每次去文件里讀取一行么
不管什麼語言讀文件都可能有緩存,有些是操作系統的行為,比如一次性讀取幾千個位元組,目的是防止頻繁訪問硬體,提高效率。用如下代碼獲得緩存大小:
importio
print(io.DEFAULT_BUFFER_SIZE)
可以試試,如果你10秒內改動的位置在此大小之後(假如DEFAULT_BUFFER_SIZE
=8192bit,你改的位置在此之後(假定是第100行)),理論上readline100次以上則會反映出文件更新
也可以試試下面的open方法:
open("file.txt","r",0)#0指的是無緩存
E. 怎麼用python在arp緩存中獲取mac地址『
這個需要安裝一個模塊scapy
代碼如下:
#!/usr/bin/envpython
#-*-coding:utf-8-*-
fromscapy.allimportsrp,Ether,ARP,conf
ipscan='192.168.1.1/24'
try:
ans,unans=srp(Ether(dst="FF:FF:FF:FF:FF:FF")/ARP(pdst=ipscan),timeout=2,verbose=False)
exceptException,e:
printstr(e)
else:
forsnd,rcvinans:
list_mac=rcv.sprintf("%Ether.src%-%ARP.psrc%")
printlist_mac
F. Py中模版緩存怎麼操作呢具體步驟
模板緩存就是把模版內容緩存到指定位置,只要涉及模版都可以設置緩存,下面以py程序為例:
在導入搜索期間首先會被檢查的地方是 sys.moles。 這個映射起到緩存之前導入的所有模塊的作用(包括其中間路徑)。 因此如果之前導入過 foo.bar.baz,則 sys.moles 將包含 foo, foo.bar 和 foo.bar.baz 條目。 每個鍵的值就是相應的模塊對象。
在導入期間,會在 sys.moles 查找模塊名稱,如存在則其關聯的值就是需要導入的模塊,導入過程完成。 然而,如果值為 None,則會引發 MoleNotFoundError。 如果找不到指定模塊名稱,Python 將繼續搜索該模塊。
sys.moles 是可寫的。刪除鍵可能不會破壞關聯的模塊(因為其他模塊可能會保留對它的引用),但它會使命名模塊的緩存條目無效,導致 Python 在下次導入時重新搜索命名模塊。鍵也可以賦值為 None ,強制下一次導入模塊導致 MoleNotFoundError 。
但是要小心,因為如果你還保有對某個模塊對象的引用,同時停用其在 sys.moles 中的緩存條目,然後又再次導入該名稱的模塊,則前後兩個模塊對象將 不是 同一個。 相反地,importlib.reload() 將重用 同一個 模塊對象,並簡單地通過重新運行模塊的代碼來重新初始化模塊內容。
G. python 文件讀取的問題
首先,"失敗實驗2"是能夠成功的。為什麼你失敗了呢?我用的2.5。
也就是說,創建後,用close()將數據寫入,再使用同樣的變數名讀取是完全沒有問題的。(因為已經重新定義了嘛!)
失敗的實驗1中,
f.write('ase') 後數據並沒有被寫入,在緩存區中。
然後f.read(),我個人理解為連緩存中的其他數據也讀取了,或者破壞了緩存中的內容。可以看到,開頭是要寫入的內容『asd』,後面是無意義的數據。
f.close()時,寫入的已經是被修改後的緩存區內容了……也就是asd再加上一大串NULL等……
這個例子告訴我們……用W+時還沒close前不要讀取……哈哈。
恩~恩~
H. python 寫入excel 遇到緩沖區問題 程序要循環很多次,每次都要讀取不同的數據有多也
google搜下吧,python操作excel的模塊應該有很多的,你的文件結構還是很清晰的,寫個簡單parser應該不難。如果你經常要處理這類文本的話,推薦用心寫個parser,不要用正則。
你的文件結構差不多是這樣,2個等於號行之間是整個序列信息的匯總。
之後----號那行之間是可以扔掉的注釋,之後有個n個(optional?)section(section起始於某個有:的行,到下個:行之間終止,都是序列各個元件的成分),我沒有py里寫parser的經驗,不過如果你用parsec的話(這個原生haskell模組有各種語言的binding或類似模組),我恰巧幾天前寫過一個parsec使用小例子,你如果准備用類似模組,