2 回答

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個贊
您不應(yīng)該使用file.readlines()。這樣做會立即將整個文件讀入內(nèi)存,這很可能會立即將其填滿。相反,遍歷文件:
with open("internet.log", "r") as file:
for items in file:
(當(dāng)然,取決于您對數(shù)據(jù)的處理方式,當(dāng)您遍歷文件時,這仍然可能會中斷。)

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個贊
您正在使用讀取整個文件到內(nèi)存中readlines。
您可以說一次讀一行for items in file。
使用更好的變量名和列表理解來稍微整理代碼,以生成結(jié)果:
with open("internet.log") as log:
finalResults = [[getDate(line), getIPAddress(line), getDomainsVisited(line)]
for line in log
if 'query[A]' in line]
我將結(jié)果提取到一個函數(shù):
def parse_log_line(line):
return [getDate(line),
getIPAddress(line),
getDomainsVisited(line)]
那么您的代碼將是:
with open("internet.log") as log:
finalResults = [parse_log_line(line)
for line in log
if 'query[A]' in line]
添加回答
舉報