AttributeError: у объекта 'ZipInfo' нет атрибута 'filemode' - PullRequest
1 голос
/ 14 марта 2019

Как получить доступ к атрибуту файлового режима zipfile?

>>> info = zin.infolist()[1]
>>> info
<ZipInfo filename='test_dir/' filemode='drwxr-xr-x' external_attr=0x10>
>>> info.filename
'test_dir/'
>>> info.external_attr
1106051088
>>> info.filemode
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'ZipInfo' object has no attribute 'filemode'

1 Ответ

0 голосов
/ 14 марта 2019

Атрибуты файла хранятся в верхних битах external_attr (над младшими 16 битами):

oct(1106051088 >> 16)
#'0o40755'

Для проверки конкретных разрешений используйте функции из модуля stat, например ::

stat.S_ISDIR(1106051088 >> 16)
# True, a directory

stat.S_IRUSR & (1106051088>>16)
# 256, user-readable

stat.S_IWGRP&(1106051088>>16)
# 0, not group-writable
...