2010-06-09 3 views
5

zipfile.ZipFile 인스턴스에 쓰여진 파일의 파일 속성 (예 : 읽기 전용)을 유지하는 방법을 찾고 있습니다.ZipFile의 파일 속성 유지

zip 보관함에 추가하는 파일의 파일 속성이 재설정됩니다. zip 응용 프로그램과 압축을 풀고 압축 파일을 검사 할 때 읽기 전용 플래그가 사라집니다.

현재 환경이 Windows이고 ZipInfo.external_attr 방법에 문제가 있습니다.

확실히 ZipFile에 쓸 때 파일 속성을 보존하는 표준 방법이 있어야합니까?

+0

질문을 편집하고 "문제가 있음"을 설명하십시오. 그렇지 않으면 도움을 줄 수 없습니다. –

+0

원래 질문은 유효합니다. 그것은 유닉스 용으로 구현하지 않았기 때문에 stackoverflow diddnt work에 대한 솔루션에 대한 단점이었습니다. 잘못된 설명, 요점. – Elijah

답변

3

내가 가지고있는 문제는 무겁게 문서화되지 않은 zipfile.ZipInfo.external_attr입니다. 이 객체에서 발견 된 모든 예제는 * nix 파일의 사용 권한 스타일을 반영한 것입니다.

내 구현은 창에서 실행됩니다.

그래서 "리버스 엔지니어링"에 대해 살펴 보았습니다. ㅎ. Windows 용

마법의 수 읽기 전용 ZipInfo.external_attr은 마찬가지로 33

입니다 :

z = zipfile.ZipFile(targetFile, 'w') 
(path, filename) = os.path.split(sourceFile) 
bytes = file(sourceFile, 'rb') 
info = zipfile.ZipInfo(filename) 
info.external_attr = 33 
z.writestr(info, bytes.read()) 
bytes.close() 
z.close() 

당신으로 ZipFile를을 만들 속성의 다른 유형에 대한 올바른 값을 찾을 필요가있는 경우 일부 창 우편 응용 프로그램과 함께 그것을 원하고 이것에 그것을 달려라 :

z = zipfile.ZipFile(sourceFile, 'r') 
info = z.getinfo('fileToTest.ext') 
print ("create_system", info.create_system) 
print ("external_attr", info.external_attr) 
print ("internal_attr", info.internal_attr) 

건배!

+0

참조 http://stackoverflow.com/questions/434641/how-do-i-set-permissions-attributes-on-a-file-in-a-zip-file-using-pythons-zipf/6297838#6297838 . 당신은 문서화되지 않은 external_attr 필드에 대해 옳았습니다. –

+0

Windows에서 "minizip"을 사용하여 모든 파일 속성을 미리 인식하는 동안 같은 문제가 발생했습니다. 다음 코드를 사용 : DWORD attribs = GetFileAttributesW (szOut); \t \t zi.external_fa = attribs; –