Python은 access로 파일의 점용 여부를 판단하는 실례 방법
>>> import os
>>> fn = r'D:\temp\csdn\t.py' #
>>> os.access(fn, os.F_OK) #
True
>>> os.access(fn, os.R_OK) #
True
>>> os.access(fn, os.W_OK) #
True
>>> os.access(fn, os.X_OK) #
True
>>> fp = open(fn, 'a+') #
>>> os.access(fn, os.F_OK) #
True
>>> os.access(fn, os.R_OK) #
True
>>> os.access(fn, os.W_OK) #
True
>>> os.access(fn, os.X_OK) #
True
>>> fp.close()
보이다access () 는 파일 읽기와 쓰기 속성을 되돌려줍니다. 파일이 점용되었는지 여부와 반 푼의 관계가 없습니다.나중에 그룹에서 어떤 학우들은try로 오픈 파일을 시도해 봐도 괜찮다고 건의했다. 만약 성공한다면 파일이 점용되지 않았고, 이상을 던지면 파일이 점용되었다는 뜻이다.과연 그럴까?코드로 검증하는 게 낫겠다.
>>> fp1 = open(fn, 'a+')
>>> fp2 = open(fn, 'a+')
>>> fp1.close()
>>> fp2.close()
그 결과 같은 파일을 쓰는 방식으로 여러 번 열었지만 시스템에서 이상이 발견되지 않았다.왜 이러지?그 이유는 파일이 열리는 것과 파일이 차지하는 것이 완전히 다른 문제이기 때문이다.상기 테스트를 할 때'w'방식을 사용하지 마십시오. 그렇지 않으면 파일 내용이 비워질 것입니다.그렇다면 도대체 파이썬으로 파일이 점용되었는지 아닌지를 어떻게 판단해야 합니까?이 문제는 운영체제 차원으로 돌아가서 해결해야 한다. 즉, win32api 모듈에 의존하는 것이다.
>>> import win32file
>>> def is_used(file_name):
try:
vHandle = win32file.CreateFile(file_name, win32file.GENERIC_READ, 0, None, win32file.OPEN_EXISTING, win32file.FILE_ATTRIBUTE_NORMAL, None)
return int(vHandle) == win32file.INVALID_HANDLE_VALUE
except:
return True
finally:
try:
win32file.CloseHandle(vHandle)
except:
pass
>>> fn = r'D:\temp\csdn\t.py'
>>> is_used(fn)
False
>>> fp = open(fn, 'a+')
>>> is_used(fn)
True
>>> fp.close()
>>> is_used(fn)
False
간단하게 검증했어, 함수 is_used () 는 기본적으로 사용할 수 있습니다.파이썬이 access로 파일이 점용되었는지 아닌지를 판단하는 실례적인 방법에 관한 이 글은 여기에 소개되었습니다. 파이썬이 어떻게 access로 파일이 점용되었는지 판단하는 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.