Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 9, 2013 09:33:47

Sergey32
Зарегистрирован: 2013-09-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите со распаковкой всех gzip файлов и указанном каталоге.

Всем привет, с питоном не знаком, но возникла необходимость срочно реализовать функционал по распаковке всех gzip файлов в каталоге на jython, к сожалению два дня уже бьюсь ничего не получается.
очень прошу помочь) Спасибо)

Офлайн

#2 Сен. 9, 2013 09:59:49

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Помогите со распаковкой всех gzip файлов и указанном каталоге.

вы покажите код на которым бьетесь а мы поправим !



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Сен. 9, 2013 10:20:29

Sergey32
Зарегистрирован: 2013-09-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите со распаковкой всех gzip файлов и указанном каталоге.

Я пытался реализовать через команды 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 "

Офлайн

#4 Сен. 9, 2013 14:20:26

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Помогите со распаковкой всех gzip файлов и указанном каталоге.

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

Соедините вместе - и получите то что требовалось !



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Сен. 10, 2013 07:50:11

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Помогите со распаковкой всех gzip файлов и указанном каталоге.

А зачем вам питон? :)

import subprocess as sp
sp.check_call("7z x *.gz")



Отредактировано doza_and (Сен. 10, 2013 07:50:28)

Офлайн

#6 Сен. 16, 2013 14:09:23

Sergey32
Зарегистрирован: 2013-09-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите со распаковкой всех gzip файлов и указанном каталоге.

Спасибо огромное, попробую)

Офлайн

#7 Окт. 6, 2013 16:49:30

Sergey32
Зарегистрирован: 2013-09-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите со распаковкой всех gzip файлов и указанном каталоге.

Добрый вечер.

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():
Так же не могу до конца понять как нужно объявлять строку с двойнымы кавычками или апострофами
будть добры подскажите пожалуйста.

Офлайн

#8 Окт. 6, 2013 20:08:15

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Помогите со распаковкой всех gzip файлов и указанном каталоге.

Sergey32
не могу до конца понять
:) Вы просто очень спешите. Надо было наверное еще денька 3 подождать, чтобы хоть месяц прошел со дня постановки задачи распаковки gzip файлов.
a='"a"'
двойные однинарные и тройные кавычки взаимозаменяемы если в строке есть кавычки, используйте другие кавычки для обозначения строки.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version