使用python使用子进程从7zip存档中解压缩选定的文件

时间:2012-02-03 15:11:50

标签: python subprocess 7zip

我目前正在使用subprocess来使用7zip解压缩选择或压缩文件。我必须使用这个解包方法而不是zipfile模块,因为有时zipfile会破坏shapefile。我目前的方法是:

try:

    for file in os.listdir(downloads):
        print file
        expression2 = sevenzip + " e " +downloads + '\\' + file + " -oC:\Users\Oulton"
        print expression2

    #os.system(r"C:\Users\Oulton\7z e C:\Users\Oulton\install.zip -oC:\Users\Oulton")
        subprocess.call(expression2)



except:
        time.sleep(3)
        traceback.print_exc()

但这不方便,因为:

  1. 我只想解压某些.shp文件而不是每个zip中的所有其他垃圾
  2. 每次迭代打开和关闭一个shell,我希望shell在整个
  3. 中保持打开状态
  4. 我必须使用手动输入来覆盖使用此方法重复命名的文件

1 个答案:

答案 0 :(得分:1)

  1. 7z e C:\Users\Oulton\install.zip -oC:\Users\Oulton" *.shp -r
  2. 使用Windows的for循环重用相同的shell:http://www.robvanderwoude.com/for.php
  3. 3

    -ao (Overwrite mode) switch
    Specifies the overwrite mode during extraction, to overwrite files already present on disk.
    

    -i-x可用于分别包含或排除特定文件以进行提取。

    7z e C:\Users\Oulton\install.zip -oC:\Users\Oulton -ir!*.shp -ir!*.mxd -ir!*.shx -ir!*.sbn -ir!*.dbf -ir!*.xml