Linux 서버에 많은 압축 파일이 있고 각 파일에는 여러 텍스트 파일이 있습니다.추출 된 파일의 이름을 zipfile로 바꿉니다.
내가 원하는 것은 압축 된 파일에서 같은 이름의 텍스트 파일을 추출하여 폴더에 저장하는 것입니다. 각 압축 파일에 대해 하나의 폴더를 만들고 텍스트 파일을 추출합니다. 파일 이름 끝에 부모 ZIP 폴더 이름을 추가하고 모든 텍스트 파일을 하나의 디렉토리에 저장해야합니다. 예를 들어 zip 폴더가 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()
with..open을 사용한 다음 파일을 닫지 않아도됩니다. 또한 문자열과 경로를 연결하는 대신 os.path.join을 사용하는 것이 좋습니다 –
이 코드는'pwkwd'가 현재 작업 디렉토리 인 경우에만 작동합니다. 그렇지 않으면'file_name = os.path.abspath (item)'은 올바른 경로를 구축하지 않습니다. 당신은 절대 경로가 필요 없다 ... os.path.join (pwkwd, item)'할 것이다. – tdelaney
@ Matt.St 조언 주셔서 감사합니다 – Roo