创建一个包文件python

时间:2013-07-03 18:10:44

标签: python linux python-3.x

我需要创建一个脚本来从多个文件夹中复制所有文件.class和.xml并生成类似tar类型的包,这些不同的路径文件夹将在脚本运行时填充,这可能吗?

我正在使用linux - Centos

由于

1 个答案:

答案 0 :(得分:0)

Python的标准库附带multiple archiving modules,更多可以从PyPI和其他地方获得。

我不确定你要如何填写要包含的内容的路径,但是假设你已经完成了那部分,并且你有一个列表或迭代器,其中包含(适当的相对)文件路径名。然后,你可以这样做:

with tarfile.TarFile('package.tgz', 'w:gz') as tar:
    for pathname in pathnames:
        tar.add(pathname)

但您甚至不必逐个收集所有文件,因为tarfile可以为您做到这一点。假设您的脚本只将一个或多个目录名称作为命令行参数,并且您希望它以递归方式将名称以.xml.class结尾的所有文件添加到任何目录中的任何位置:

def package_filter(info):
    if info.isdir() or os.path.splitext(info.name)[-1] in ('.xml', '.class'):
        return info
    else:
        return None

with tarfile.TarFile('package.tgz', 'w:gz', filter=package_filter) as tar:
    for pathname in sys.argv[1:]:
        tar.add(pathname)

有关详情,请参阅examples。但主要是阅读TarFile的构造函数和open方法的文档。