最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3讀取文件指定行的三種方法

 更新時間:2021年05月24日 10:51:25   作者:Dechin''s  
考慮到深度學習領域中的數(shù)據(jù)規(guī)模一般都比較大,尤其是訓練集,這個限制條件對應到實際編程中就意味著,我們很有可能無法將整個數(shù)據(jù)文件的內(nèi)容全部都加載到內(nèi)存中。那么就需要一些特殊的處理方式,本文將要介紹的是從文件中只讀取特定行的內(nèi)容的3種解決方案。

行遍歷實現(xiàn)

在python中如果要將一個文件完全加載到內(nèi)存中,通過file.readlines()即可,但是在文件占用較高時,我們是無法完整的將文件加載到內(nèi)存中的,這時候就需要用到python的file.readline()進行迭代式的逐行讀?。?/p>

filename = 'hello.txt'

with open(filename, 'r') as file:
    line = file.readline()
    counts = 1
    while line:
        if counts >= 50000000:
            break
        line = file.readline()
        counts += 1

這里我們的實現(xiàn)方式是先用一個with語句打開一個文件,然后用readline()函數(shù)配合while循環(huán)逐行加載,最終通過一個序號標記來結束循環(huán)遍歷,輸出文件第50000000行的內(nèi)容。該代碼的執(zhí)行效果如下:

dechin@ubuntu2004:~/projects/gitlab/dechin/$ time python3 get_line.py 

real    0m10.359s
user    0m10.062s
sys     0m0.296s

可以看到這里的耗時為10s多一些。

linecache實現(xiàn)

雖然在python的readline函數(shù)中并沒有實現(xiàn)讀取指定行內(nèi)容的方案,但是在另一個庫linecache中是實現(xiàn)了的,由于使用的方式較為簡單,這里直接放上代碼示例供參考:

filename = 'hello.txt'

import linecache
text = linecache.getline(filename, 50000000)

該代碼的執(zhí)行結果如下:

dechin@ubuntu2004:~/projects/gitlab/dechin/$ time python3 get_line.py 

real    0m11.904s
user    0m5.672s
sys     0m6.231s

雖然在實現(xiàn)方式上簡化了許多,但是我們發(fā)現(xiàn)這個實現(xiàn)的用時超過了11s,還不如我們自己手動實現(xiàn)的循環(huán)遍歷方案。因此如果是對于性能有一定要求的場景,是不建議采用這個方案的。

命令行sed獲取

我們知道用Linux系統(tǒng)本身自帶的sed指令也是可以獲取到文件指定行或者是指定行范圍的數(shù)據(jù)的,其執(zhí)行指令為:sed -n 50000000p filename即表示讀取文件的第50000000行的內(nèi)容。同時結合python的話,我們可以在python代碼中執(zhí)行系統(tǒng)指令并獲取輸出結果:

filename = 'hello.txt'

import os
result = os.popen('sed -n {}p {}'.format(50000000, filename)).read()

需要注意的是,如果直接運行os.system()是沒有返回值的,只有os.popen()是有返回值的,并且需要在尾巴加上一個read()的選項。該代碼的執(zhí)行結果如下:

dechin@ubuntu2004:~/projects/gitlab/dechin/$ time python3 get_line.py 

real    0m2.532s
user    0m0.032s
sys     0m0.020s

可以看到直接使用sed指令的執(zhí)行速度很快,但是用這種方法并不是一本萬利的,比如以下這個例子:

filename = 'hello.txt'

import os
result = os.popen('sed -n {}p {}'.format(500, filename)).read()

我們把讀取第50000000行內(nèi)容改為讀取第500行的內(nèi)容,再運行一次程序:

dechin@ubuntu2004:~/projects/gitlab/dechin/$ time python3 get_line.py 

real    0m2.540s
user    0m0.037s
sys     0m0.013s

然而我們發(fā)現(xiàn)這個速度并沒有因為要讀取的行數(shù)減少了而變少,而是幾乎保持不變的。

總結概要

本文通過4個測試案例分析了在python中讀取文件指定行內(nèi)容的方案,并得到了一些運行耗時的數(shù)據(jù)。從需求上來說,如果是對于小規(guī)模的數(shù)據(jù),比如幾百行規(guī)模的數(shù)據(jù),建議使用readline循環(huán)遍歷來操作,速度也相當不錯,或者是linecache中的函數(shù)實現(xiàn)也是可以的,甚至可以直接用readlines將整個文本內(nèi)容加載到內(nèi)存中。但是對于數(shù)據(jù)規(guī)模比較大的場景,比如超過了千萬行的級別,那么使用sed指令的方式對指定行內(nèi)容進行讀取的方式,應該是所有方式中最快速的。

本文首發(fā)鏈接為:https://www.cnblogs.com/dechinphy/p/lbl.html

作者ID:DechinPhy

以上就是python3讀取文件指定行的三種方法的詳細內(nèi)容,更多關于python讀取文件指定行的資料請關注腳本之家其它相關文章!

相關文章

  • python實現(xiàn)吃蘋果小游戲

    python實現(xiàn)吃蘋果小游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)吃蘋果小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • python字典的常用操作方法小結

    python字典的常用操作方法小結

    下面小編就為大家?guī)硪黄猵ython字典的常用操作方法小結。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
    2016-05-05
  • Python+uiautomator2實現(xiàn)手機鎖屏解鎖功能

    Python+uiautomator2實現(xiàn)手機鎖屏解鎖功能

    python-uiautomator2封裝了谷歌自帶的uiautomator2測試框架,提供便利的python接口,這篇文章給大家介紹使用Python+uiautomator2實現(xiàn)手機鎖屏解鎖(期望輸入的鎖屏密碼,基于滑動解鎖),感興趣的朋友一起看看吧
    2021-04-04
  • python中print格式化輸出的問題

    python中print格式化輸出的問題

    所謂格式化輸出,就是創(chuàng)建一個可以嵌入變量內(nèi)容的字符串。這篇文章主要介紹了python中print格式化輸出,需要的朋友可以參考下
    2021-04-04
  • 在Django的上下文中設置變量的方法

    在Django的上下文中設置變量的方法

    這篇文章主要介紹了在Django的上下文中設置變量的方法,Django是重多Python高人氣框架中最為著名的一個,需要的朋友可以參考下
    2015-07-07
  • 如何利用Python實現(xiàn)給Excel表格截圖

    如何利用Python實現(xiàn)給Excel表格截圖

    這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)給Excel表格截圖功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-02-02
  • Python實現(xiàn)的登錄驗證系統(tǒng)完整案例【基于搭建的MVC框架】

    Python實現(xiàn)的登錄驗證系統(tǒng)完整案例【基于搭建的MVC框架】

    這篇文章主要介紹了Python實現(xiàn)的登錄驗證系統(tǒng),結合完整實例形式分析了Python基于搭建的MVC框架進行登錄驗證操作的相關實現(xiàn)與使用技巧,需要的朋友可以參考下
    2019-04-04
  • 讓Python程序定時執(zhí)行的8種方法整理

    讓Python程序定時執(zhí)行的8種方法整理

    在日常工作中,我們常常會用到需要周期性執(zhí)行的任務,一種方式是采用?Linux?系統(tǒng)自帶的?crond?結合命令行實現(xiàn),另外一種方式是直接使用Python。本文整理了一下?Python?定時任務的實現(xiàn)方式,希望對大家有所幫助
    2023-01-01
  • pyqt QGraphicsView 以鼠標為中心進行縮放功能實現(xiàn)

    pyqt QGraphicsView 以鼠標為中心進行縮放功能實現(xiàn)

    在PyQt開發(fā)中,實現(xiàn)QGraphicsView的鼠標中心縮放功能需要注意初始化以及關鍵函數(shù)的重定義,遇到不達預期的效果時,可能需要重寫所有鼠標事件,本文記錄了解決QGraphicsView鼠標縮放問題的過程,供開發(fā)者參考
    2024-10-10
  • django請求返回不同的類型圖片json,xml,html的實例

    django請求返回不同的類型圖片json,xml,html的實例

    今天小編就為大家分享一篇django請求返回不同的類型圖片json,xml,html的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論

临安市| 保山市| 张家川| 民乐县| 白银市| 资溪县| 安龙县| 财经| 玉环县| 襄樊市| 巴彦淖尔市| 泰和县| 余庆县| 武乡县| 海宁市| 醴陵市| 津市市| 江油市| 旬邑县| 尼勒克县| 崇礼县| 库伦旗| 诸暨市| 陕西省| 台北县| 石河子市| 临夏市| 洛隆县| 永登县| 吴桥县| 大连市| 永顺县| 广昌县| 彭山县| 桃园市| 奉节县| 花垣县| 高阳县| 陆川县| 霍邱县| 沾益县|