日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python內(nèi)存映射文件讀寫方式

瀏覽:13日期:2022-07-27 16:52:38

我就廢話不多說了,還是直接看代碼吧!

import osimport timeimport mmap filename = ’test.txt’ #如果不存在,創(chuàng)建。if not os.path.exists(filename): open(filename, ’w’) print(os.path.isdir(filename))if os.path.isfile(filename): print(time.ctime(os.path.getctime(filename))) fd = os.open(filename, os.O_RDWR)m = mmap.mmap(fd, 50, access=mmap.ACCESS_WRITE) # 1024字節(jié)的文件。m.seek(2) buf1 = bytes(b’Zhang’)m[2:len(buf1)+2] = buf1 buf2 = b’Phil’ m.seek(20) # 定位寫入的位置。m.write(buf2) # 寫入字節(jié)數(shù)據(jù)。m.close() fd = os.open(filename, os.O_RDWR)m = mmap.mmap(fd, 50, access=mmap.ACCESS_READ)m.seek(20)buf3 = m.read(len(buf2))m.close()print(list(buf3))

操作后的test.txt文件內(nèi)容:

Zhang Phil

補(bǔ)充知識(shí):Python對(duì)二進(jìn)制文件做內(nèi)存映射,高效優(yōu)雅地對(duì)內(nèi)容隨機(jī)訪問

讀寫二進(jìn)制文件還在使用open函數(shù)?

各種組合seek()、read()和write()累不累?

使用 mmap 模塊實(shí)現(xiàn)對(duì)文件的內(nèi)存映射,讓我們讀寫二進(jìn)制文件像操作數(shù)組一樣高效優(yōu)雅。

先給出一個(gè)實(shí)用函數(shù),用來演示如何打開一個(gè)文件并對(duì)它進(jìn)行內(nèi)存映射操作。

def memory_map(filename, access=mmap.ACCESS_WRITE): size = os.path.getsize(filename) fd = os.open(filename, os.O_RDWR) return mmap.mmap(fd, size, access=access)

要使用這個(gè)函數(shù),需要先準(zhǔn)備一個(gè)已經(jīng)創(chuàng)建好的文件并為之填充一些數(shù)據(jù)。

>>> size = 1000000>>> with open(’data’,’wb’) as f: f.seek(size-1) f.write(b’x00’)

接著我們可以使用memory_map()函數(shù)對(duì)文件內(nèi)容做內(nèi)存映射,它返回的mmap對(duì)象可以讓我們像操作數(shù)組一樣讀寫二進(jìn)制文件!

>>> m = memory_map(’data’)>>> len(m)1000000>>> m[:10]b’x00x00x00x00x00x00x00x00x00x00’>>> m[0]0>>> m[0:11]=b’Hello World’#改變一個(gè)切片>>> m.close()>>> with open(’data’,’rb’) as f:#驗(yàn)證改變已經(jīng)生效 print(f.read(11)) b’Hello World’

由于mmap()返回的mmap對(duì)象也可以當(dāng)作上下文管理器使用,在這種情況下,底層的文件會(huì)自動(dòng)關(guān)閉。

>>> with memory_map(’data’) as m: print(len(m)) print(m[0:11]) 1000000b’Hello World’

默認(rèn)情況下memory_map()函數(shù)打開的文件既可以讀,也可以寫。對(duì)數(shù)據(jù)的任何修改都會(huì)拷貝回原始的文件中。

如果需要只讀訪問,可以為access參數(shù)提供mmap.ACCESS_READ值。

m = memory_map(filename, mmap.ACCESS_READ)

如果只想要在本地修改數(shù)據(jù),并不想將這些修改寫回到原始文件中,可以使用mmap.ACCESS_COPY參數(shù)。

m = memory_map(filename, mmap.ACCESS_COPY)

總結(jié):

通過mmap將文件映射到內(nèi)存之后,我們可以高效并優(yōu)雅地對(duì)文件的內(nèi)容進(jìn)行隨機(jī)訪問。

與其打開文件后通過組合各種seek()、read()和write()調(diào)用來訪問,不如簡單將文件映射到內(nèi)存,然后通過切片操作來訪問數(shù)據(jù)。

需要強(qiáng)調(diào)的是,對(duì)某個(gè)文件進(jìn)行內(nèi)存映射并不會(huì)導(dǎo)致將整個(gè)文件讀到內(nèi)存中。也就是說,文件并不會(huì)拷貝到某種內(nèi)存緩沖區(qū)或數(shù)組上。相反,操作系統(tǒng)只是為文件內(nèi)容保留一段虛擬內(nèi)存而已。

當(dāng)訪問文件的不同區(qū)域時(shí),文件的這些區(qū)域?qū)⒈蛔x取并按照需要映射到內(nèi)存區(qū)域中。但是,文件中從未訪問過的部分會(huì)簡單地留在磁盤上。這一切都是以透明的方式在幕后完成的。

如果有多個(gè)Python解釋器對(duì)同一個(gè)文件做了內(nèi)存映射,得到的mmap對(duì)象可以用來在解釋器之間交換數(shù)據(jù)。也就是說,所有的解釋器可以同時(shí)讀/寫數(shù)據(jù),在一個(gè)解釋器中對(duì)數(shù)據(jù)做出的修改會(huì)自動(dòng)反映到其他解釋器上。

雖然還需要一些額外的步驟來處理同步問題,但是有時(shí)候可以使用這種方法作為通過管道或者socket傳輸數(shù)據(jù)的替代方案。

以上這篇Python內(nèi)存映射文件讀寫方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文字幕av亚洲精品一部二部| 综合激情婷婷| 午夜在线精品| 久久亚洲精品中文字幕蜜潮电影| 国产精品蜜月aⅴ在线| 亚洲一区二区三区四区电影| 久久国产电影| 蜜桃视频在线网站| 精品中文在线| 丁香婷婷久久| 日韩综合一区| 捆绑调教美女网站视频一区 | 国产亚洲一区二区手机在线观看 | 日本成人一区二区| 99视频精品| 亚洲作爱视频| 国产91一区| 国内一区二区三区| 欧美精品99| 欧美日韩国产传媒| 日本一区二区高清不卡| 精品精品99| 激情久久99| 免费看久久久| 国产一区二区视频在线看| 久久精品国产网站| 国产精品99在线观看| 国产亚洲一区二区手机在线观看 | 99riav国产精品| 亚洲在线网站| 一区二区自拍| 中文字幕成人| 欧美视频二区| 久久永久免费| 色一区二区三区| 黑丝一区二区三区| 一本一道久久a久久| 亚洲免费毛片| 久久99久久人婷婷精品综合| 手机在线电影一区| 不卡中文一二三区| 亚洲精品高潮| 精品一区二区三区中文字幕在线| 欧美xxxx中国| 久久婷婷激情| 美女尤物久久精品| 国产精品亚洲人成在99www| 免费日韩成人| 亚洲五月婷婷| 日韩欧美在线精品| 国产精品二区不卡| 另类激情亚洲| 久久精品二区亚洲w码| 欧美在线观看视频一区| 一区二区高清| 波多视频一区| 日本一区免费网站| 麻豆视频在线观看免费网站黄 | 久久亚洲视频| 麻豆精品久久| japanese国产精品| 国产亚洲电影| 91精品电影| 青青草伊人久久| 亚洲午夜电影| 欧美aⅴ一区二区三区视频| 影音先锋国产精品| 久久精品三级| 鲁大师成人一区二区三区| 欧美成人精品一级| 99久久婷婷这里只有精品| 综合五月婷婷| 欧美三级网址| 久久99精品久久久野外观看| 黄色av一区| 精品一区av| 亚洲aa在线| 久久精品99久久无色码中文字幕| 欧美亚洲三级| 蜜桃一区二区三区| 欧美国产免费| 在线国产日韩| 久久久久久自在自线| 蜜桃av一区二区三区电影| 欧美少妇精品| 日韩精品一区第一页| 久久久久伊人| 日韩一区二区三区四区五区| 欧美日韩视频网站| 美女视频免费精品| 亚洲久久一区| 波多野结衣一区| 国产不卡人人| 国产精品一区高清| 亚洲三级精品| 亚洲精华国产欧美| 日韩精品永久网址| 美日韩一区二区三区| 日韩一区免费| 美女久久一区| 亚洲成人av观看| 欧美黄色一区二区| 国产精品一国产精品k频道56| 色8久久久久| 性色一区二区| 伊人久久大香线蕉av不卡| 精品视频一区二区三区在线观看| 日韩欧美久久| 天堂俺去俺来也www久久婷婷| 亚洲视频综合| 九九色在线视频| 日韩欧美自拍| 在线天堂中文资源最新版| 免费看久久久| 久久成人av| 啪啪亚洲精品| 国产精品综合色区在线观看| 亚洲精品麻豆| 亚州欧美在线| 蜜臀av在线播放一区二区三区| 最新亚洲激情| 不卡在线一区二区| 夜夜精品视频| 国产精品嫩草99av在线| 婷婷综合在线| 国产亚洲在线观看| 在线看片一区| 日韩不卡一二三区| 日韩国产精品久久久久久亚洲| 亚洲精品护士| 亚洲资源网站| 国产欧美日韩在线观看视频| 国产欧美日韩影院| 欧美黑人做爰爽爽爽| 国产精品3区| 精品一区二区三区亚洲| 国产精品成人a在线观看| 国产不卡人人| 亚洲二区在线| 蜜臀av亚洲一区中文字幕| 一本一本久久| 亚洲专区一区| 青青青国产精品| 青青草91久久久久久久久| 国产欧美另类| 美女视频网站久久| 999久久久91| 日韩一区二区久久| 国产伦乱精品| 色婷婷色综合| 国产精品色网| 日韩av一级片| 日韩av二区| 欧美日韩视频| 日本国产欧美| 国产成人精选| 国产农村妇女精品一二区| 日本va欧美va精品| 91亚洲国产| 亚洲欧美日韩综合国产aⅴ| 亚洲一区不卡| 日本特黄久久久高潮| 国产aa精品| 亚洲激情不卡| 欧美一区久久| 欧美aa在线观看| 蜜桃视频一区二区| 精品精品99| 亚洲专区在线| 麻豆久久久久久| 婷婷激情图片久久| 国产美女撒尿一区二区| 日韩中文视频| 日本91福利区| 久久精品官网| 日韩不卡一二三区| 黄毛片在线观看| 久久国产精品亚洲77777| 欧美一区91| 热三久草你在线| 亚洲伊人影院| 精品国产aⅴ| 香蕉久久久久久久av网站| sm捆绑调教国产免费网站在线观看 | 久久精品欧洲| 国产99精品| 水蜜桃久久夜色精品一区的特点| 模特精品在线| 韩日一区二区| 日韩国产在线不卡视频| 成人日韩在线观看| 国产欧美自拍| av亚洲在线观看| 免费在线成人| 亚洲作爱视频| 麻豆网站免费在线观看| 天堂va在线高清一区| 欧美+亚洲+精品+三区| 久久久久伊人| 亚洲精品麻豆|