【发布时间】:2017-10-20 03:59:24
【问题描述】:
我在 Linux 服务器上有很多压缩文件,每个文件都包含多个文本文件。
我想要的是提取其中一些文本文件,它们在压缩文件中具有相同的名称,并将其保存在一个文件夹中;我正在为每个压缩文件创建一个文件夹并将文本文件提取到其中。我需要将父压缩文件夹名称添加到文件名的末尾,并将所有文本文件保存在一个目录中。例如,如果压缩文件夹是 March132017.zip,我提取了 holding.txt,我的文件名将是 holding_march13207.txt。
我的问题是我无法更改提取文件的名称。 如果您能提供建议,我将不胜感激。
import os
import sys
import zipfile
os.chdir("/feeds/lipper/emaxx")
pwkwd = "/feeds/lipper/emaxx"
for item in os.listdir(pwkwd): # loop through items in dir
if item.endswith(".zip"): # check for ".zip" extension
file_name = os.path.abspath(item) # get full path of files
fh = open(file_name, "rb")
zip_ref = zipfile.ZipFile(fh)
filelist = 'ISSUERS.TXT' , 'SECMAST.TXT' , 'FUND.TXT' , 'HOLDING.TXT'
for name in filelist :
try:
outpath = "/SCRATCH/emaxx" + "/" + os.path.splitext(item)[0]
zip_ref.extract(name, outpath)
except KeyError:
{}
fh.close()
【问题讨论】:
-
与..open 一起使用,然后你就不需要关心关闭文件了。我还建议使用 os.path.join 而不是连接字符串和路径
-
顺便说一句,此代码仅在
pwkwd是当前工作目录时才有效。否则file_name = os.path.abspath(item)不会建立正确的路径。您不需要绝对路径...os.path.join(pwkwd, item)可以。 -
@Matt.St 感谢您的建议
-
@tdelaney 谢谢。 Pwkd 设置为我的 cwd。