[PYTHON] Windows에서 fcntl 대체
PYTHONWindows에서 fcntl 대체
필자는 표준 라이브러리에서 fcntl 모듈을 사용하는 Python 프로젝트 (장고 프로젝트 인 경우에는 이런 일이 발생 함)를 받았다. 표준 라이브러리는 Linux에서만 사용할 수있는 것으로 보인다. 내 Windows 컴퓨터에서 실행하려고하면이 모듈이 여기에 없기 때문에 ImportError로 중지합니다.
Windows에서 작동하도록 프로그램을 약간 변경하는 방법이 있습니까?
해결법
-
==============================
1.Windows에서 fcntl 대신 win32api 호출이 사용됩니다. 사용법은 완전히 다릅니다. 플립 할 수있는 스위치가 아닙니다.
Windows에서 fcntl 대신 win32api 호출이 사용됩니다. 사용법은 완전히 다릅니다. 플립 할 수있는 스위치가 아닙니다.
즉, 윈도우에 fcntl-heavy-user 모듈을 이식하는 것은 쉽지 않습니다. 각 fcntl 호출이 정확히 무엇을하는지 분석 한 다음 동등한 win32api 코드가 있으면 찾으십시오.
또한 fcntl을 사용하는 일부 코드에는 Windows와 동등한 기능이 없기 때문에 모듈 api와 어쩌면 이식중인 모듈을 사용하는 프로그램의 구조 / 패러다임을 변경해야 할 수도 있습니다.
fcntl 호출에 대한 자세한 내용을 제공하면 사람들이 동등한 윈도우를 찾을 수 있습니다.
-
==============================
2.fcntl 모듈은 고정 파일을 잠그는 데만 사용되므로 다중 액세스를 시도하지 않는다고 가정 할 때 이는 적절한 해결책이 될 수 있습니다. 이 모듈을 sys.path에 넣으면 공식 fcntl 모듈처럼 작동해야합니다.
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
-
==============================
3.이 방법이 곧 도움이되지는 않지만, Unix (fcntl)와 Windows (win32 API 호출) 모두에서 작동 할 수있는 대안이 있습니다 : portalocker
이 방법이 곧 도움이되지는 않지만, Unix (fcntl)와 Windows (win32 API 호출) 모두에서 작동 할 수있는 대안이 있습니다 : portalocker
Python을위한 flock-style 파일 잠금을위한 크로스 플랫폼 (posix / nt) API로 설명합니다. 기본적으로 fcntl을 win32 API 호출에 매핑합니다.
http://code.activestate.com/recipes/65203/의 원본 코드를 별도의 패키지 (https://pypi.python.org/pypi/portalocker)로 설치할 수 있습니다.
from https://stackoverflow.com/questions/1422368/fcntl-substitute-on-windows by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Selenium을 사용하여 인증서를 처리하는 방법은 무엇입니까? (0) | 2018.10.04 |
---|---|
[PYTHON] 파이썬 팬더 중복 열 제거 (0) | 2018.10.04 |
[PYTHON] 소수점 이하의 소수점을 반올림하는 법? (0) | 2018.10.04 |
[PYTHON] 범위 내에서 'n'개의 고유 난수 생성 [duplicate] (0) | 2018.10.04 |
[PYTHON] 파이썬 사전을 XML로 직렬화 [닫힘] (0) | 2018.10.04 |