회사 보안 감사 때문에, 암호화되지 않은 문서들 일괄 처리 스크립트를 작성중에 Read-Only 속성 걸린 파일 때문에 골치를 썩었다. (이럴때마다, 난 파이썬의 도움을 받곤한다. ㄳㄳ)
간단한 구글링을 통해 아래의 방법으로 Read-Only 속성을 포함한 윈도우 파일 속성을 처리하는 방법을 아래와 같이 정리한다.
다른 파일 속성들도 위의 방법과 같이 적용하면 된다.
간단한 구글링을 통해 아래의 방법으로 Read-Only 속성을 포함한 윈도우 파일 속성을 처리하는 방법을 아래와 같이 정리한다.
- Win32 Extension for Python을 설치한다.
- 사용되는 API는 다음과 같다.
- win32file.GetFileAttributes(file_name)
- win32file.SetFileAttributes(file_name, new_fattr)
- 사용되는 속성들은 다음과 같다.
- win32file.FILE_ATTRIBUTE_ARCHIVE
- win32file.FILE_ATTRIBUTE_OFFLINE
- win32file.FILE_ATTRIBUTE_COMPRESSED
- win32file.FILE_ATTRIBUTE_READONLY
- win32file.FILE_ATTRIBUTE_DIRECTORY
- win32file.FILE_ATTRIBUTE_SYSTEM
- win32file.FILE_ATTRIBUTE_HIDDEN
- win32file.FILE_ATTRIBUTE_TEMPORARY
- win32file.FILE_ATTRIBUTE_NORMAL
- Read-Only 속성을 가지고 있는지 확인하는 예제
def isReadOnly(file):
fattr = win32file.GetFileAttributes(file)
ret = fattr & win32file.FILE_ATTRIBUTE_READONLY
if ret == win32file.FILE_ATTRIBUTE_READONLY:
return True
else:
return False
fattr = win32file.GetFileAttributes(file)
ret = fattr & win32file.FILE_ATTRIBUTE_READONLY
if ret == win32file.FILE_ATTRIBUTE_READONLY:
return True
else:
return False
- Read-Only를 설정하는 예제
def setReadOnly(file):
fattr = win32file.GetFileAttributes(file)
new_fattr = fattr | win32file.FILE_ATTRIBUTE_READONLY
win32file.SetFileAttributes(file, new_fattr)
fattr = win32file.GetFileAttributes(file)
new_fattr = fattr | win32file.FILE_ATTRIBUTE_READONLY
win32file.SetFileAttributes(file, new_fattr)
- Read-Only를 해제하는 예제
def unsetReadOnly(file):
fattr = win32file.GetFileAttributes(file)
mask = 0xFFFF^win32file.FILE_ATTRIBUTE_READONLY
new_fattr = fattr & mask
win32file.SetFileAttributes(file, new_fattr)
fattr = win32file.GetFileAttributes(file)
mask = 0xFFFF^win32file.FILE_ATTRIBUTE_READONLY
new_fattr = fattr & mask
win32file.SetFileAttributes(file, new_fattr)
다른 파일 속성들도 위의 방법과 같이 적용하면 된다.