日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python读取文件_python这么受欢迎,你知道如何以正确的方式来读取文件内容吗

發布時間:2024/10/8 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python读取文件_python这么受欢迎,你知道如何以正确的方式来读取文件内容吗 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

對于互聯網的開發人員來說,讀取寫入文件幾乎是代碼中常見的一種操作。但是經常性的打開關閉文件,浪費資源不說,當文件大的時候讀取的效率也不高。所以今天我們一起看一個便捷的模塊linecache。linecache顧名思義,就是從內存中讀取指定文件的第幾行。本文接下來會從三個方面來介紹這個模塊,相信大家讀了之后會有一定的知識收獲

  • linecache如何使用
  • linecache的源碼分析
  • 對于這個模塊的一些思考和總結

注:本文所說的linecache是針對于python這門語言中自帶的一個模塊

linecache如何使用

了解python語法的讀者應該知道,我們在使用一個模塊的時候,首先需要把它導入程序中。

1.import linecache

2.from linecache import *

第一種和第二種導入模塊的方法效果是一樣的,具體我們來看看,linecache模塊一共有三個功能函數getline(讀取文件的某一行),clearcache(清空已經讀到內存的文件cache),checkcache(檢查丟掉其中過期的一些cache)。我們重點來看下getline這個函數。舉個例子,假如我們有一個bytedance.txt文件,文件內容如下:

1.welcome to bytedance

2.*********************

3.welcome to toutiao

我們想要獲取第三行的內容,如果程序中使用的是第一種模塊導入的方式,那么可以通過linecache.getline("bytedance.txt",3)來直接獲取文件第三行的內容。如果使用了第二種模塊導入的方式,那么就是getline("bytedance.txt",3)

linecache的源碼分析

這一塊讓我們具體來看下源碼的內容,源碼是怎樣實現這些功能的函數呢?

__all__ = ["getline", "clearcache", "checkcache"]

首先源碼中寫明了這個模塊可以導入的功能函數有三個,對于__all__這個屬性,用來表明這個模塊中的哪些函數可以被外部程序導入。

def getline(filename, lineno, module_globals=None):

lines = getlines(filename, module_globals)

if 1 <= lineno <= len(lines):

return lines[lineno-1]

else:

return ''

我們先來看下getline這個函數,這個函數就是傳入文件名稱,第幾行這兩個參數。然后根據lineno獲取lines的第(lineno-1)個元素,也就是我們想要讀取的目標行。

注:程序中默認從0開始計數,所以讀取lineno行,其實就是獲取lines[lineno-1]

def getlines(filename, module_globals=None):

"""Get the lines for a file from the cache.

Update the cache if it doesn't contain an entry for this file already."""

if filename in cache:

return cache[filename][2]

try:

return updatecache(filename, module_globals)

except MemoryError:

clearcache()

return []

getline先是調用getlines這個函數獲取文件的所有內容。那么getlines這個函數又做了哪些邏輯處理呢?兩個方面,假如讀取的這個文件已經存在cache內存中,那么就返回內存中的文件內容。如果cache中之前沒有讀取這個文件,那么就需要調用updatecache這個函數重新讀取這個文件。也就是以下這部分代碼

try:

with open(fullname, 'rU') as fp:

lines = fp.readlines()

except IOError:

return []

對于這個模塊的一些思考和總結

linecache本質上就是預讀,讀取一次文件,然后將讀取到的內容和文件名稱作為鍵值對寫入字典中,之后程序在需要讀取文件內容的時候,就不用重新打開文件讀取內容了,可以直接從存儲在內存的字典中獲取想要的文件內容,非常的方便。那么當文件很大,達到幾百MB或者達到G級別的時候,將整個文件讀取到內存中是否合適,這個時候開銷會怎樣呢。毫無疑問,文件特別大的時候,一次性讀入內存的開銷是很大的,如果不需要頻繁的讀取文件,那么不建議將大文件直接一次性的讀取到內存中。具體需要怎樣去使用,還是需要貼合我們業務場景來決定。

總結

以上是生活随笔為你收集整理的python读取文件_python这么受欢迎,你知道如何以正确的方式来读取文件内容吗的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。