我需要创建一个脚本来从多个文件夹中复制所有文件 .class 和 .xml 并生成一个类似 tar 类型的包,脚本运行时将填充那些不同的路径文件夹,这可能吗?
我正在使用 linux - Centos
谢谢
我需要创建一个脚本来从多个文件夹中复制所有文件 .class 和 .xml 并生成一个类似 tar 类型的包,脚本运行时将填充那些不同的路径文件夹,这可能吗?
我正在使用 linux - Centos
谢谢
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
方法的文档。