Как установить разрешение на выполнение при создании tar.gz с использованием Python для Windows - PullRequest
1 голос
/ 28 марта 2019

Созданный tar.gz не имеет прав на выполнение при передаче в linux после создания.

Цель: файл должен иметь полные права после его установки в системе Linux.

Я используюБиблиотека tarfile в Python для достижения этой цели.

import os
import tarfile
with tarfile.open('test.tar.gz', "x:gz") as tar:
    tar.add("path_to_src_folder", arcname=os.path.basename("path_to_dir", filter=tarinfo.mode(777))


----------------OR-------------------------------------------


import tarfile
def set_permissions(tarinfo):
    tarinfo.mode = 777
    return tarinfo

with tarfile.open('test.tar.gz', "x:gz") as tar:
    tar.add("path_to_src_folder", filter=set_permissions)

1 Ответ

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

Чтобы изменить разрешение файла, вам нужно использовать приведенный ниже фрагмент

os.chmod('manage.py', 0666)

Если вам нужно изменить разрешение для всей папки, то ниже приведен фрагмент, чтобы сделать это рекурсивно.

import os

def change_permissions_recursive(path, mode):
    for root, dirs, files in os.walk(path, topdown=False):
        for dir in [os.path.join(root,d) for d in dirs]:
            os.chmod(dir, mode)
    for file in [os.path.join(root, f) for f in files]:
            os.chmod(file, mode)
change_permissions_recursive('my_folder', 0o777)

Чтобы добавить / переопределить разрешение при создании файла tar, фрагмент кода, который находится в вашем вопросе, должен работать нормально. То же самое было упомянуто и в приведенной ниже ссылке,

сохранение прав доступа к файлу при создании архива с tar-файлом Python

...