0

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

我正在使用 linux - Centos

谢谢

4

1 回答 1

0

Python 的标准库带有多个归档模块,并且可以从 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)

有关更多信息,请参阅示例。但主要是阅读TarFile的构造函数和open方法的文档。

于 2013-07-03T18:20:32.377 回答