【问题标题】:Extract name of files in a compressed file (.7z) using python使用python提取压缩文件(.7z)中的文件名
【发布时间】:2019-04-30 17:29:28
【问题描述】:

我想知道压缩文件 (7zip) 中文件的名称,而不提取该文件。我如何在 python 中做到这一点?

【问题讨论】:

    标签: python compression 7zip


    【解决方案1】:

    在 Mac 或 Linux 上,您可以使用 libarchive。 (在windows上你可以试试libarchive-c但我没试过)

    这里有一个粗略的例子可以帮助你入门,不过我建议你阅读链接

    import libarchive.public
    
    with libarchive.public.file_reader('test.7z') as e:
        for entry in e:
             print(e)
    

    【讨论】:

      【解决方案2】:

      另一个 Linux 示例,如果您只是在编写一个快速脚本(不用担心来自不受信任的用户的变形文件名),您总是可以推迟到 7z 可执行文件(此代码假设您的代码支持未记录的 -ba 选项)

      #!/usr/bin/python3
      # this doesn't work for files with embedded newlines
      
      import subprocess
      import sys
      
      pp = subprocess.run(
          [ '7z', 'l', '-ba', sys.argv[1] ] ,
          stdout = subprocess.PIPE ,
          stderr = subprocess.PIPE ,
      )
      
      pp.check_returncode()
      
      for line in pp.stdout.split( b'\n' ):
          if line:
              sys.stdout.buffer.write( line[53:] )
              sys.stdout.buffer.write( b'\n' )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-02
        • 1970-01-01
        • 1970-01-01
        • 2014-12-13
        相关资源
        最近更新 更多