将 zipfile 提取代码从 ruby 转换为 python

Converting zipfile extracting code from ruby to python

我正在将代码从 ruby 转换为 python 以提取 zip 文件的内容。

我是 python 的新手,不确定如何准确转换以下代码。

ruby代码:

def extract_from_zipfile(inzipfile)

  txtfile=""
  Zip::File.open(inzipfile) { |zipfile|
    zipfile.each { |file|
      txtfile=file.name
      zipfile.extract(file,file.name) { true }
    }
  }

  return txtfile
end

这是我的 python 代码:

def extract_from_zipfile(inzipfile):

 txtfile=""
 with zipfile.ZipFile(inzipfile,"r") as z:
  z.extractall(txtfile)
 return txtfile

它returns 的值为none。

在ruby版本中,txtfile将引用最后提取的文件。

在Python中,您可以使用zipfile.ZipFile.namelist获取文件列表:

def extract_from_zipfile(inzipfile):
    txtfile = ""
    with zipfile.ZipFile(inzipfile, "r") as z:
        z.extractall(txtfile)
        names = z.namelist()    # <---
        if names:               # <--- To prevent IndexError for empty zip file.
            txtfile = names[-1] # <---
    return txtfile