已經有一段時間了,因爲我已經用for循環編寫函數,並且用我的無知來寫入文件。函數將行附加到.csv
該函數給出一個IP地址從文本文件讀取; ping IP,搜索接收到的數據包,然後將其附加到一個.csv
我的問題是:是否有更好或更簡單的方法來編寫它?
def pingS (IPadd4):
fTmp = "tmp"
os.system ("ping " + IPadd4 + "-n 500 > tmp")
sName = siteNF #sys.argv[1]
scrap = open(fTmp,"r")
nF = file(sName,"a") # appends
nF.write(IPadd4 + ",")
for line in scrap:
if line.startswith(" Packets"):
arrT = line.split(" ")
nF.write(arrT[10]+" \n")
scrap.close()
nF.close()
注:如果您需要完整的劇本,我可以提供這一點。
鑑於他正在ping一個IP地址500次,我不確定更快的IO會提高整體速度。 – MDT 2012-02-10 04:44:34
由於每次追加都會導致分配新內存,因此追加比使用緩衝區更爲昂貴。如果列表變得足夠大,你可能會有一些令人興奮的事情發生。將一行附加到一個300MB的文件將導致舊對象的一個副本與您的新行結束。 (300 + 300 +行大小)性能差異不僅在速度(數量級),而且在內存消耗方面。 – gmoney 2012-02-10 20:08:33