Найти - Пользователи
Полная версия: Помогите со распаковкой всех gzip файлов и указанном каталоге.
Начало » Центр помощи » Помогите со распаковкой всех gzip файлов и указанном каталоге.
1
Sergey32
Всем привет, с питоном не знаком, но возникла необходимость срочно реализовать функционал по распаковке всех gzip файлов в каталоге на jython, к сожалению два дня уже бьюсь ничего не получается.
очень прошу помочь) Спасибо)
ZerG
вы покажите код на которым бьетесь а мы поправим !
Sergey32
Я пытался реализовать через команды Windows
но может возможно это реализовать средствами jython?
import os
if os.system (<CODE>'for %%f in (D:\LOAD\XML\*.*) do D:\LOAD\BIN\gzip.exe -dc %%f > %%f.XML' </CODE> ) == 0 :
print "success"
else:
print " failure "
ZerG
from zipfile import ZipFile
import os
 
# unzip a file
def unzip(path):
    zfile = zipfile.ZipFile(path)
    for name in zfile.namelist():
        (dirname, filename) = os.path.split(name)
        if filename == '':
            # directory
            if not os.path.exists(dirname):
                os.mkdir(dirname)
        else:
            # file
            fd = open(name, 'w')
            fd.write(zfile.read(name))
            fd.close()
    zfile.close()


А так же рекурсивный обход файлов

import os
def getSubs(dir):
    # get all
    dirs = []
    files = []
    for dirname, dirnames, filenames in os.walk(dir):
        dirs.append(dirname)
        for subdirname in dirnames:
            dirs.append(os.path.join(dirname, subdirname))
        for filename in filenames:
            files.append(os.path.join(dirname, filename))
    return files, dirs

Соедините вместе - и получите то что требовалось !
doza_and
А зачем вам питон? :)
import subprocess as sp
sp.check_call("7z x *.gz")
Sergey32
Спасибо огромное, попробую)
Sergey32
Добрый вечер.

ZerG на основе вашего кода написал вот что

from zipfile import ZipFile
import os
Arch_files = []
def getSubs(dir):
    for dirname, dirnames, filenames in os.walk(dir): 
        for filename in filenames: 
          Arch_files.append(os.path.join(dirname, filename))
# unzip a file
def unzip(path):
    zfile = zipfile.ZipFile(path)
      for name in zfile.namelist():
        (dirname, filename) = os.path.split(name)
        if filename == '':
            # directory
            if not os.path.exists(dirname):os.mkdir(dirname)
        else:
            # file
            fd = open(name, 'w')
            fd.write(zfile.read(name))
            fd.close()
    zfile.close()
getSubs('D:\tmp_gz\')
for Arch_file in Arch_files: 
  unzip(Arch_file)


не могу запустить, я использую JES и он ругается на конструкцию FOR
  for name in zfile.namelist():
Так же не могу до конца понять как нужно объявлять строку с двойнымы кавычками или апострофами
будть добры подскажите пожалуйста.
doza_and
Sergey32
не могу до конца понять
:) Вы просто очень спешите. Надо было наверное еще денька 3 подождать, чтобы хоть месяц прошел со дня постановки задачи распаковки gzip файлов.
a='"a"'
двойные однинарные и тройные кавычки взаимозаменяемы если в строке есть кавычки, используйте другие кавычки для обозначения строки.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB