为了账号安全,请及时绑定邮箱和手机立即绑定

Windows上的fcntl替代品

/ 猿问

Windows上的fcntl替代品

蝴蝶不菲 2019-11-13 15:33:59

我收到了一个Python项目(如果需要的话,它恰好是Django项目)使用fcntl了标准库中的模块,该库似乎仅在Linux上可用。当我尝试在Windows计算机上运行它时,它会以停止ImportError,因为此模块在此处不存在。

我有什么办法可以对程序进行一些小的更改以使其在Windows上运行?



查看完整描述

3 回答

?
慕仙森

fcntlWindows上的替代项是win32api调用。用法是完全不同的。这不是您可以直接拨动的开关。

换句话说,将fcntl-heavy-user模块移植到Windows并非易事。它要求您分析每个fcntl调用的确切功能,然后找到等效的win32api代码(如果有)。

也有可能某些使用的代码fcntl没有Windows等效项,这将要求您使用要移植的模块来更改模块api以及程序的结构/范例。

如果您提供有关fcntl呼叫的更多详细信息,人们可以找到Windows等效项。


查看完整回答
反对 回复 2019-11-13
?
烙印99

fcntl模块仅用于锁定固定文件,因此,假设您不尝试多路访问,这是可以接受的解决方法。将此模块放在您的中sys.path,它应该可以作为正式的fcntl模块使用。


尝试仅在Windows中将此模块用于开发/测试目的。


def fcntl(fd, op, arg=0):

    return 0


def ioctl(fd, op, arg=0, mutable_flag=True):

    if mutable_flag:

        return 0

    else:

        return ""


def flock(fd, op):

    return


def lockf(fd, operation, length=0, start=0, whence=0):

    return


查看完整回答
反对 回复 2019-11-13
?
慕沐林林

尽管这并不能立即为您提供帮助,但是还有一种可以与Unix(fcntl)和Windows(win32 api调用)一起使用的替代方法,称为:portalocker


它将自己描述为跨平台(posix / nt)API,用于Python的羊群式文件锁定。它基本上将fcntl映射到win32 api调用。


现在可以将http://code.activestate.com/recipes/65203/上的原始代码作为单独的软件包安装-https: //pypi.python.org/pypi/portalocker


查看完整回答
反对 回复 2019-11-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信