在Windows上使用Python创建tar.gz时如何设置执行权限

时间:2019-03-28 05:47:25

标签: python tarfile

在创建后在linux上传输时,创建的tar.gz没有执行权限。

目标:在Linux系统上获取文件后,该文件应具有完整权限。

我正在python中使用'tarfile'库来实现这一目标。

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 :(得分:0)

要更改文件的权限,您只需使用以下代码段

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文件时添加/覆盖权限,您问题中的代码段应该可以正常工作。在下面的链接中也提到了这一点,

preserving file permission when creating a tarball with Python's tarfile