我正在将一个代码从ruby转换为python,它提取zipfile的内容。
我是python新手,不知道如何准确地转换下面的代码。
红宝石代码:
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
它返回值为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