簡體   English   中英

Python指針

[英]Python pointers

我被要求編寫一個程序來從文件中查找字符串“錯誤”,並在python中打印匹配的行。

  1. 將首先打開具有更多內容的文件
  2. 我使用fh.readlines並將其存儲在變量中
  3. 此后,將使用for循環並逐行迭代。 檢查字符串“ error”。打印找到的行。

我被要求在python中使用指針,因為當日志文件包含大量輸出時,將文件內容分配給變量會浪費時間。

我對python指針做了研究。 但沒有發現有用的東西。 誰能幫我用指針寫上面的代碼,而不是將整個內容存儲在一個變量中。

python中沒有指針。 但是可以實現指針之類的東西,但是對於您的情況不是必需的。 嘗試以下代碼

with open('test.txt') as f:
    content = f.readlines()
for i in content:
  if  "error" in i:
    print(i.strip())

即使您想了解Python變量,因為指向該鏈接的指針

http://scottlobdell.me/2013/08/understanding-python-variables-as-pointers/

python中沒有指針,盡管可以實現類似指針的東西,但在您的情況下不值得付出努力。
正如該鏈接的解決方案中指出的那樣,
逐行讀取Python中的大型文本文件,而不將其加載到內存中
您可以使用類似:
with open("log.txt") as infile: for line in infile: if "error" in line: print(line.strip())
上下文管理器將自動關閉文件,並且一次只能讀取一行。 讀取下一行時,除非您已將對它的引用存儲在其他位置,否則將對前一行進行垃圾回收。

您可以通過使用密鑰對值來使用字典。 只需將日志文件轉儲到字典中,其中關鍵字將是單詞,值將是行號。 因此,如果您搜索字符串“錯誤”,您將獲得它們出現的行號,因此可以打印它們。 由於在字典或哈希表中進行搜索的時間為常數O(1),因此將花費更少的時間。 但是,是的,存儲是否需要時間取決於您是否避免碰撞。

我使用下面的代碼,而不是將數據放入變量然后進行循環。

對於open('c182573.log','r')。readlines()中的行:if('Executing'in line):打印行

因此,我們無法在python中實現指針或引用。

謝謝大家

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM