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