在python中创建一个包文件
我需要创建一个脚本来复制多个文件夹中的所有文件.class和.xml,并生成一个类似tar类型的包,这些不同路径的文件夹将在脚本运行时填充,这可能吗 我正在使用linux-Centos在python中创建一个包文件,python,linux,python-3.x,Python,Linux,Python 3.x,我需要创建一个脚本来复制多个文件夹中的所有文件.class和.xml,并生成一个类似tar类型的包,这些不同路径的文件夹将在脚本运行时填充,这可能吗 我正在使用linux-Centos 感谢您提供了Python的标准库,PyPI和其他地方提供了更多 我不确定您希望如何填写要包含的内容的路径,但假设您已经完成了这部分,并且您有一个列表或迭代器,其中包含了文件的路径名(适当的相对路径名)。然后,您可以这样做: with tarfile.TarFile('package.tgz', 'w:gz') a
感谢您提供了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
方法的文档。您使用的是哪个版本的Python 3.x?如果您仍停留在3.1上,则tarfile
更强大的功能会有所不同。