欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python將文件映射到內(nèi)存使用mmap.mmap()函數(shù)方式

 更新時間:2024年02月10日 09:57:52   作者:AllardZhao  
這篇文章主要介紹了Python將文件映射到內(nèi)存使用mmap.mmap()函數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

如何將文件映射到內(nèi)存

實(shí)際案例

(1)在訪問某些二進(jìn)制文件時,希望能把文件映射到內(nèi)存中,可以實(shí)現(xiàn)隨機(jī)訪問。(framebuffer設(shè)備文件)

(2)某些嵌入式設(shè)備,寄存器被編址到內(nèi)存地址空間,我們可以映射/dev/mem某范圍,去訪問這些寄存器。

(3)如果多個進(jìn)程映射同一個文件,還能實(shí)現(xiàn)進(jìn)程通信的目的。

解決方案

使用標(biāo)準(zhǔn)庫中mmap模塊的mmap()函數(shù),它需要一個打開的文件描述作為參數(shù)。

代碼演示

# 使用dd命令創(chuàng)建大小為1M的,每個字節(jié)都是0的二進(jìn)制文件demo.bin
~ % dd if=/dev/zero of=demo.bin bs=1024 count=1024
1024+0 records in
1024+0 records out
1048576 bytes transferred in 0.008838 secs (118644037 bytes/sec)
# 以16進(jìn)制形式查看這個文件
~ % od -x demo.bin
0000000      0000    0000    0000    0000    0000    0000    0000    0000
*
4000000
# 接下來對這個文件進(jìn)行映射
import mmap
 
'''
mmap.mmap函數(shù)介紹:
    需要注意對于不同的平臺對這個函數(shù)使用稍有差別。
    Windows: mmap(fileno, length[, tagname[, access[, offset]]])
    Unix: mmap(fileno, length[, flags[, prot[, access[, offset]]]])
    fileno為文件描述符,并不是一個文件對象,文件描述符是由系統(tǒng)調(diào)用的open函數(shù)得到的,
    系統(tǒng)調(diào)用的open函數(shù)在os.open(),也可以使用python的open函數(shù)
    offset為指定映射區(qū)域,必須以頁對齊的
'''
 
# b為二進(jìn)制模式,r+為讀寫權(quán)限
f = open('demo.bin', 'r+b')
# 得到文件描述符
print(f.fileno())
# 做映射,映射區(qū)域長度為0映射整個文件,訪問權(quán)限寫
mn = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_WRITE)
# m為mmap對象類似于數(shù)組一樣的操作
print(type(mn))
print(mn[0])
print(mn[10:20])
# 對文件進(jìn)行寫操作
mn[0] = 88
# 字符串長度和切片長度保持一致
mn[4:8] = b'\xff' * 4
# 設(shè)置offset跳過4個頁,并且映射8個頁
mn2 = mmap.mmap(f.fileno(), mmap.PAGESIZE * 8, access=mmap.ACCESS_WRITE, 
offset=mmap.PAGESIZE * 4)
# 對切片進(jìn)行修改
mn2[:0x1000] = b'\xaa' * 0x1000
修改文件映射內(nèi)存的內(nèi)容并查看
# 修改映射地址內(nèi)容
# 查看[0]、[4:8]和[:0x1000]內(nèi)容修改
 ~ % od -x demo.bin
0000000      0058    0000    ffff    ffff    0000    0000    0000    0000
0000020      0000    0000    0000    0000    0000    0000    0000    0000
*
0040000      aaaa    aaaa    aaaa    aaaa    aaaa    aaaa    aaaa    aaaa
*
0050000      0000    0000    0000    0000    0000    0000    0000    0000
*
4000000

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python之鏈表的反轉(zhuǎn)方式

    python之鏈表的反轉(zhuǎn)方式

    這篇文章主要介紹了python之鏈表的反轉(zhuǎn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Python簡單實(shí)現(xiàn)自動刪除目錄下空文件夾的方法

    Python簡單實(shí)現(xiàn)自動刪除目錄下空文件夾的方法

    這篇文章主要介紹了Python簡單實(shí)現(xiàn)自動刪除目錄下空文件夾的方法,涉及Python針對文件與目錄的讀取、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • Python+pandas編寫命令行腳本操作excel的tips詳情

    Python+pandas編寫命令行腳本操作excel的tips詳情

    這篇文章主要介紹了Python+pandas編寫命令行腳本操作excel的tips詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • Python入門開發(fā)教程  windows下搭建開發(fā)環(huán)境vscode的步驟詳解

    Python入門開發(fā)教程 windows下搭建開發(fā)環(huán)境vscode的步驟詳解

    大家都知道Python是跨平臺的,它可以運(yùn)行在Windows、Mac和各種Linux/Unix系統(tǒng)上。在Windows上寫Python程序,放到Linux上也是能夠運(yùn)行的,今天給大家分享Python開發(fā)環(huán)境搭建vscode的步驟,一起看看吧
    2021-07-07
  • 利用Python爬蟲實(shí)現(xiàn)搶購某寶秒殺商品

    利用Python爬蟲實(shí)現(xiàn)搶購某寶秒殺商品

    這篇文章主要介紹了利用Python爬蟲實(shí)現(xiàn)搶購某寶秒殺商品,文章基于python的相關(guān)資料展開詳細(xì)的內(nèi)容介紹具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • 在Matplotlib圖中插入LaTex公式實(shí)例

    在Matplotlib圖中插入LaTex公式實(shí)例

    這篇文章主要介紹了在Matplotlib圖中插入LaTex公式實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python+Turtle繪制可愛的可達(dá)鴨

    Python+Turtle繪制可愛的可達(dá)鴨

    一年一度的六一兒童節(jié)又來了,祝大朋友小朋友節(jié)日快樂!本文主要介紹如何運(yùn)用Python中的turtle庫控制函數(shù)繪制可達(dá)鴨,希望你會喜歡
    2022-05-05
  • Python?isdigit()函數(shù)使用詳解

    Python?isdigit()函數(shù)使用詳解

    這篇文章主要介紹了Python?isdigit()函數(shù)使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Python-split()函數(shù)實(shí)例用法講解

    Python-split()函數(shù)實(shí)例用法講解

    在本篇文章里小編給大家整理的是一篇關(guān)于Python-split()函數(shù)實(shí)例用法講解,有興趣的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Python實(shí)現(xiàn)的概率分布運(yùn)算操作示例

    Python實(shí)現(xiàn)的概率分布運(yùn)算操作示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的概率分布運(yùn)算操作,涉及Python概率運(yùn)算與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08

最新評論