【问题标题】:How to exclude ".DS_Store" path when compressing files in Python在 Python 中压缩文件时如何排除“.DS_Store”路径
【发布时间】:2016-05-04 14:24:36
【问题描述】:

我有一个将特定文件压缩成 zip 文件的 python 脚本。但是我注意到在这个 zip 文件中生成了一个文件“.DS_Store”。有没有办法可以从 zip 文件中删除它,或者避免在我的 python 脚本中首先创建它。根据我在网上找到的内容,我认为在 Windows 机器上,这个隐藏文件显示为“macosx”文件。

我已经测试了带有和不带有“.DS_Store”隐藏文件的 zip 文件(我手动删除了它)。当我删除它时,可以正确处理 zip 文件,当我将其保留时,会引发错误。

这就是我在 python 脚本中创建 zip 文件的方式:

    #Create zip file of all necessary files
    zipf = zipfile.ZipFile(new_path+zip_file_name, 'w', zipfile.ZIP_DEFLATED)
    create_zip(new_path,zipf)
    zipf.close()

如有任何建议如何删除此隐藏文件,我们将不胜感激。

【问题讨论】:

  • 您是在 Mac 上运行脚本吗? en.wikipedia.org/wiki/.DS_Store
  • @TimPietzcker 是的,但 zip 正在一个单独的系统上处理,当它出于某种原因检测到“.DS_Store”时会抛出错误
  • 它会抛出什么错误? Windows 应该只恢复文件。
  • 这可能会有所帮助:superuser.com/questions/198569/….

标签: python zip hidden-files


【解决方案1】:

您的代码使用了函数 create_zip,但您尚未共享该函数的代码。据推测,它遍历目录的内容并调用 ZipFile 实例的 .write 方法,以便将每个文件写入存档。如果是这种情况,只需向该函数添加一些逻辑以排除任何名为 .DS_Store 的文件。

def create_zip(path, zipfile):
    files = os.listdir(path)
    for file in files:
        if file != '.DS_Store':
            zipfile.write(file)

【讨论】:

  • 或任何隐藏文件:if not file.startswith('.'):
猜你喜欢
  • 1970-01-01
  • 2011-04-12
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多