使用 zipfile 解压缩存档将 exe 转换为文本文件 (MacOS)

Unzipping an archive with zipfile turns an exe into text file (MacOS)

我在 Mac 上使用 zipfile (Python 3.6) 来解压缩包含文件、文件夹和可执行文件的 zip 存档。可执行文件是用 PyInstaller 制作的,并压缩在 Mac 上。当我解压缩存档时,它将可执行文件从 Unix 可执行文件类型转换为 TextEdit 文件类型。当我手动解压缩时,一切正常并生成所需的 Unix 可执行文件。 Windows.

一切正常

我不确定如何使用 zip 示例 post 这个,因为我确信人们会犹豫使用未签名的 exe 文件,但我的代码在下面。

请注意,我曾尝试使用 os.chmod 来更改权限来解决此问题,但这没有用:

import zipfile
import os
zip_path = '/Applications/testzip/example.zip'
zip_dir = '/Applications/testzip'

zf = zipfile.ZipFile(zip_path)

for file in zf.infolist():
    path = os.path.join(file.filename, zip_dir)
    os.chmod(path, 0o0755)
    zf.extract(file.filename, zip_dir)

zf.close()
print('done')

不确定这是否是最好的方法,但我能够通过在提取后使用子进程更改权限来使其工作。貌似很慢,但是好用

import zipfile
import subprocess
import os
zip_path = '/Applications/testzip/armada_pipeline.zip'
zip_dir = '/Applications/testzip'

zf = zipfile.ZipFile(zip_path)

for file in zf.infolist():
    path = os.path.join(zip_dir, file.filename)
    zf.extract(file, zip_dir)
    subprocess.call(['chmod', 'u+x', path])

zf.close()
print('done')