【问题标题】:Python: tarfile exclude .git folder inside tarPython:tarfile 排除 tar 中的 .git 文件夹
【发布时间】:2021-06-02 03:01:43
【问题描述】:

我有一个 git 存储库,我想对除 .git 文件夹及其内容之外的所有文件进行 tar。

我在tar.add(...) 中找到了参数exclude=... 的答案,但它似乎被贬低了。还有其他方法吗?

【问题讨论】:

  • def filter_func(tarinfo): if os.path.isdir(tarinfo.name): return None return tarinfo mytarfile.add(..., filter=filter_func)
  • 你能在上面试试吗?

标签: python python-3.x tar tarfile


【解决方案1】:

我认为您可以查找文件并跳过文件并使用 exec 命令来 tar。

find /dir -name "*.gz" ! -name .git -exec tar -rvf out.tar {} \;

【讨论】:

  • 谢谢,但我正在尝试使用 tarfiles python 库在 python 脚本中实现这一点
  • @Pax 不确定它是否有帮助,但如果它特定于 linux 机器,您可以尝试 subprocess 并运行此命令。但如果这有帮助的话。
【解决方案2】:
def filter_func(tarinfo):
  if os.path.isdir(tarinfo.name):
    return None
return tarinfo

mytarfile.add(..., filter=filter_func)

【讨论】:

  • 此脚本是否仅忽略所有文件夹,因为它只是检查文件是否为目录?我只想忽略 .git 和子文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多