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

如何在windows上使用Python创建tar.gz时设置执行权限,python,tarfile,Python,Tarfile,创建的tar.gz在创建后在linux上传输时没有执行权限 目标:文件在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.mo

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

目标:文件在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)

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

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


这是更改文件模式的方法。问题是如何以给定模式将文件存储在tarfile中,以便在提取归档文件时,文件具有该模式。