亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何用Python逐行讀取大文件

如何用Python逐行讀取大文件

MYYA 2019-06-09 15:51:56
如何用Python逐行讀取大文件我想遍歷整個文件的每一行。一種方法是讀取整個文件,將其保存到列表中,然后遍歷感興趣的行。這個方法使用了大量的內存,所以我正在尋找一個替代方法。到目前為止我的代碼是:for each_line in fileinput.input(input_file):     do_something(each_line)     for each_line_again in fileinput.input(input_file):         do_something(each_line_again)執行此代碼將給出一條錯誤消息:device active.有什么建議嗎?目的是計算成對的字符串相似度,意思是對于文件中的每一行,我要計算Levenshtein與其他每一行的距離。
查看完整描述

3 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

讀取文件的正確、完全Pythonic方法如下:

with open(...) as f:
    for line in f:
        # Do something with 'line'

這個with語句處理打開和關閉文件,包括在內部塊引發異常時。這個for line in f處理文件對象f作為一個可迭代,它自動使用緩沖I/O和內存管理,所以您不必擔心大文件。

查看完整回答
反對 回復 2019-06-09
?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

剝去新線路:

with open(file_path, 'rU') as f:
    for line_terminated in f:
        line = line_terminated.rstrip('\n')
        ...

帶著通用換線支撐所有文本文件行將以'\n'不管文件里有什么終結者,'\r''\n',或'\r\n'.

編輯-要指定通用換行符支持,請執行以下操作:

  • Unix上的Python 2-

    open(file_path, mode='rU')

    -所需

    [謝謝@Dave]

  • Windows上的Python 2-

    open(file_path, mode='rU')

    -任選
  • Python 3-

    open(file_path, newline=None)

    -任選

這個newline參數僅在Python 3中支持,默認為None..這個mode參數默認值為'r'在任何情況下。這個U在Python 3中被廢棄。在Windows上的Python2中,其他一些機制似乎可以轉換\r\n\n.

醫生:

為了保留本機線路終止符:

with open(file_path, 'rb') as f:
    with line_native_terminated in f:
        ...

二進制模式仍然可以將文件解析為in..每一行都有它在文件中的任何終止符。

感謝@katrielalex回答,Python的開放()醫生,還有IPython實驗。


查看完整回答
反對 回復 2019-06-09
  • 3 回答
  • 0 關注
  • 1629 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號