有一些库用于通过Python提取归档文件,如gzip、zipfile library、rarfile、tarfile、patool等。我发现其中一个库(patool)特别有用,因为它具有跨格式特性,可以提取几乎任何类型的归档文件,包括最流行的压缩包、gzip、TAR和拉尔。
要使用patool提取存档文件,非常简单:
patoolib.extract_archive( "Archive.zip",outdir="Folder1")
其中,"Archive.zip"
是存档文件的路径,"Folder1"
是将存储提取文件的目录的路径。
提取效果很好。问题是,如果我对完全相同的存档文件再次运行相同的代码,则相同的提取文件将存储在同一文件夹中,但名称略有不同(第一次运行时为file name,第二次运行时为filename1,第三次运行时为filename11,依此类推)。
相反,如果目录中已存在同名文件,则需要代码覆盖提取的文件。
这个extract_archive
函数看起来很小-它只有这两个参数,一个是verbosity
参数,一个是program
参数,指定要用它提取存档文件的程序。
编辑:
Nizam Mohamed的回答记录了extract_archive
函数实际上正在覆盖输出。我发现这是部分正确的-该函数覆盖ZIP文件,但不是GZ文件,这是我追求的。对于GZ文件,该函数仍会生成新文件。
编辑 帕德雷克坎宁安的回答建议使用master source。所以,我下载了代码,并用链接中的脚本替换了我的旧patool库脚本。结果如下:
os.listdir()
Out[11]: ['a.gz']
patoolib.extract_archive("a.gz",verbosity=1,outdir=".")
patool: Extracting a.gz ...
patool: ... a.gz extracted to `.'.
Out[12]: '.'
patoolib.extract_archive("a.gz",verbosity=1,outdir=".")
patool: Extracting a.gz ...
patool: ... a.gz extracted to `.'.
Out[13]: '.'
patoolib.extract_archive("a.gz",verbosity=1,outdir=".")
patool: Extracting a.gz ...
patool: ... a.gz extracted to `.'.
Out[14]: '.'
os.listdir()
Out[15]: ['a', 'a.gz', 'a1', 'a2']
因此,extract_archive
函数每次执行时都会创建新文件。归档在a.gz
下的文件与实际的a
有不同的名称。
目前没有回答
相关问题 更多 >
编程相关推荐