• 大小: 5KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: Python
  • 标签: fcantl.py  

资源简介

python在window上使用python-3.6.5-amd64.exe直接安装时会缺少fcntl.py文件,影响python使用。但是如果使用python-3.6.5-amd64-webinstall.exe安装就不会缺少该文件。解决办法:可以下载该文件放到python安装路径下的lib包内,或者卸载python,用python-3.6.5-amd64-webinstall.exe安装即可。

资源截图

代码片段和文件信息

“““Test program for the fcntl C module.
“““
import platform
import os
import struct
import sys
import unittest
from test.support import (verbose TESTFN unlink run_unittest import_module
                          cpython_only)

# Skip test if no fcntl module.
fcntl = import_module(‘fcntl‘)


# TODO - Write tests for flock() and lockf().

def get_lockdata():
    try:
        os.O_LARGEFILE
    except AttributeError:
        start_len = “ll“
    else:
        start_len = “qq“

    if (sys.platform.startswith((‘netbsd‘ ‘freebsd‘ ‘openbsd‘ ‘bsdos‘))
        or sys.platform == ‘darwin‘):
        if struct.calcsize(‘l‘) == 8:
            off_t = ‘l‘
            pid_t = ‘i‘
        else:
            off_t = ‘lxxxx‘
            pid_t = ‘l‘
        lockdata = struct.pack(off_t + off_t + pid_t + ‘hh‘ 0 0 0
                               fcntl.F_WRLCK 0)
    elif sys.platform.startswith(‘gnukfreebsd‘):
        lockdata = struct.pack(‘qqihhi‘ 0 0 0 fcntl.F_WRLCK 0 0)
    elif sys.platform in [‘aix3‘ ‘aix4‘ ‘hp-uxB‘ ‘unixware7‘]:
        lockdata = struct.pack(‘hhlllii‘ fcntl.F_WRLCK 0 0 0 0 0 0)
    else:
        lockdata = struct.pack(‘hh‘+start_len+‘hh‘ fcntl.F_WRLCK 0 0 0 0 0)
    if lockdata:
        if verbose:
            print(‘struct.pack: ‘ repr(lockdata))
    return lockdata

lockdata = get_lockdata()

class BadFile:
    def __init__(self fn):
        self.fn = fn
    def fileno(self):
        return self.fn

class TestFcntl(unittest.TestCase):

    def setUp(self):
        self.f = None

    def tearDown(self):
        if self.f and not self.f.closed:
            self.f.close()
        unlink(TESTFN)

    def test_fcntl_fileno(self):
        # the example from the library docs
        self.f = open(TESTFN ‘wb‘)
        rv = fcntl.fcntl(self.f.fileno() fcntl.F_SETFL os.O_NONBLOCK)
        if verbose:
            print(‘Status from fcntl with O_NONBLOCK: ‘ rv)
        rv = fcntl.fcntl(self.f.fileno() fcntl.F_SETLKW lockdata)
        if verbose:
            print(‘String from fcntl with F_SETLKW: ‘ repr(rv))
        self.f.close()

    def test_fcntl_file_descriptor(self):
        # again but pass the file rather than numeric descriptor
        self.f = open(TESTFN ‘wb‘)
        rv = fcntl.fcntl(self.f fcntl.F_SETFL os.O_NONBLOCK)
        if verbose:
            print(‘Status from fcntl with O_NONBLOCK: ‘ rv)
        rv = fcntl.fcntl(self.f fcntl.F_SETLKW lockdata)
        if verbose:
            print(‘String from fcntl with F_SETLKW: ‘ repr(rv))
        self.f.close()

    def test_fcntl_bad_file(self):
  

评论

共有 条评论

相关资源