【发布时间】:2017-05-24 16:43:41
【问题描述】:
Windows 上的 Python 2.7。尝试使用 mmap 模块,但使用打开文件处理程序而不是 with open(filename, "r+b") as f: 我只是打开它并得到一个 WindowsError [Error 5]。
它确实会重现,无论是否以管理员身份运行。
使用codecs.open() 并不能解决问题。
# -*- coding: utf8 -*-
from __future__ import print_function
import mmap
class QSHFile(object):
def __init__(self, filename):
self.filename = filename
self.file = open(filename, 'r')
self.fileno = self.file.fileno()
self.mm = mmap.mmap(self.fileno, 0)
print(self.mm[:5]) # prints first 5
if __name__ == '__main__':
qsh = QSHFile('example.qsh')
经过一番研究,我进入了:
#! /usr/bin/python
# -*- coding: utf8 -*-
from __future__ import print_function
from mmap import ACCESS_READ, mmap
class QSHFile(object):
def __init__(self, filename):
self.filename = filename
self.file = open(filename, 'rb')
self.fileno = self.file.fileno()
self.mm = mmap(self.fileno, 0, access=ACCESS_READ)
print(self.mm[:5])
if __name__ == '__main__':
qsh = QSHFile('example.qsh')
现在它工作正常。我现在做对了吗?
【问题讨论】:
-
为什么要以文本模式打开文件?
-
以管理员身份打开cmd,然后从那里调用你的python脚本
-
或提供绝对文件名!
-
from mmap import ACCESS_READ, mmap ... self.file = open(filename, 'rb') ... self.mm = mmap(self.fileno, 0, access=ACCESS_READ) 帮助,现在测试
-
还要确保当前没有其他程序正在使用该文件
标签: python windows python-2.7 mmap