停止添加stopil.make_archive存档

我在Release dir中有App dir

$cd Release
$tree
.
`-- App
    |-- App.exe
    ..........

我正在尝试在包含所有内容的Release目录中创建App-1.0.zip.那是在解压App-1.0.zip之后,我会得到这个App目录.

我尝试了shutil.make_archive,但是当我这样做时

import shutil

shutil.make_archive('App-1.0', 'zip', '.')

从发布目录中,除了应用程序目录外,我还在App-1.0.zip中获得了48字节的App-1.0.zip.也就是说,它会将未完成的存档添加到自身中.

除了在temp dir中创建档案并移动之外,有什么方法可以避免这种情况?

我试图设置base_dir并使用App作为root_dir

shutil.make_archive('App-1.0', 'zip', 'App', 'App')

但是当我设置base_dir时,出现了找不到该应用程序的错误.

Traceback (most recent call last):
  File ".......archive.py", line 4, in <module>
    shutil.make_archive('App-1.0', 'zip', 'App', 'App')
  File "C:\Users\Alex\.virtualenvs\....-nAKWzegL\lib\shutil.py", line 800, in make_archive
    filename = func(base_name, base_dir, **kwargs)
  File "C:\Users\Alex\.virtualenvs\....-nAKWzegL\lib\shutil.py", line 686, in _make_zipfile
    zf.write(path, path)
  File "C:\Users\Alex\AppData\Local\Programs\Python\Python36-32\Lib\zipfile.py", line 1594, in write
    zinfo = ZipInfo.from_file(filename, arcname)
  File "C:\Users\Alex\AppData\Local\Programs\Python\Python36-32\Lib\zipfile.py", line 484, in from_file
    st = os.stat(filename)
FileNotFoundError: [WinError 2] The system cannot find the file specified: "'App'"

‘/ App’和’./App’相同.通过完整的路径它可以工作,但是我得到了所有父目录,而不仅仅是App.

在Win32上的Python 3.6.4(v3.6.4:d48eceb,2017年12月19日,06:04:45)[MSC v.1900 32位(Intel)]

解决方法:

这是几个对我有用的解决方案:

# curdir: Release
shutil.make_archive('App-1.0', 'zip', '.', 'App')

# curdir: ../Release
shutil.make_archive('Release/App-1.0', 'zip', 'Release', 'App')
上一篇:did拼接屏最小拼缝0.88mm


下一篇:我的Java程序如何在.jar文件中存储文件?