Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中创建一个包文件_Python_Linux_Python 3.x - Fatal编程技术网

在python中创建一个包文件

在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

我需要创建一个脚本来复制多个文件夹中的所有文件.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
方法的文档。

您使用的是哪个版本的Python 3.x?如果您仍停留在3.1上,则
tarfile
更强大的功能会有所不同。