Я пытаюсь автоматизировать процесс, чтобы сжать файл Python и все его зависимости с разрешениями 755. (Причина этого заключается в том, чтобы загрузить их для AWS Lambda, для которого требуется 755 разрешений для файла).
Если бы я просто хотел заархивировать зависимости, я бы просто запустил
zip -r9 ${OLDPWD}/function.zip .
И, начиная с Как установить разрешения (атрибуты) для файла в ZIP-файле с помощью модуля Python zipfile? Мне удалось написать скрипт Python для архивирования с разрешениями, используя
def main(lambda_filename):
zipname = lambda_filename + ".zip"
filename = lambda_filename + ".py"
zip = zipfile.ZipFile(zipname, 'w', zipfile.ZIP_DEFLATED)
f = open(filename, 'r')
bytes = f.read()
f.close()
info = zipfile.ZipInfo(filename)
info.external_attr = 0o755 << 16
zip.writestr(info, bytes, zipfile.ZIP_DEFLATED)
zip.close()
if __name__ == "__main__":
filename = sys.argv[1]
main(filename)
Но как мне объединить эти два, чтобы я мог сжать все свои зависимости и затем добавить свой файл с разрешениями 755? Есть ли какой-нибудь способ, которым я могу запустить свой zip -r9
, а затем добавить свой файл позже без перезаписи?
Спасибо!