2016-12-21 4 views
0

У меня возникла помощь в создании фрагмента кода, который сжимает ввод от пользователя. Затем код переносит эту сжатую версию в файл. Код также отправляет ввод в файл, чтобы увидеть, насколько файл сжат.Как распаковать файл с помощью python 3.x и gzip

import gzip, time 

plaintext = input("Please enter the text you want to compress: ") 
file_ = open('text.txt', 'w') 
file_.write(str(plaintext)) 
file_.close() 
with gzip.open('compressed_file.text' + ".gz", "wb") as outfile: 
    outfile.write(bytes(plaintext, 'UTF-8')) 


with open("data.txt","wb") as fh: 
    with open('compressed_file.text.gz', 'rb') as fd: 
     fh.write(fd.read()) 

Мне нужна помощь в том, как распаковать файл, чтобы исходный пользовательский ввод.

+0

Что вас беспокоит? Кажется, это довольно простая проблема, учитывая утилиты в модуле 'gzip' ... – mgilson

+0

Я хочу распаковать сжатые. Но я не знаю, как и хотел бы помочь. Вторая часть кода отправляет сжатое предложение обратно пользователю, это не делает первоначальное предложение, которое я хочу достичь. –

ответ

2

Я думаю, что просто чтение GZIP-файла и запись обратно в файл вам помогут.

import gzip 

plaintext = input("Please enter the text you want to compress: ") 

with open("text.txt","wb") as file_: 
    file_.write(str(plaintext.encode('utf-8'))) 

filename = input("Please enter the desired filename: ") 
print("Name of file to be zipped is text.txt") 
print("Name of GZIP file is ",filename+'.gz') 
print("Zipping file...") 
with gzip.GzipFile(filename + ".gz", "wb") as outfile: 
    outfile.write(open("text.txt").read()) 

print("Name of unzipped file is unzip_text.txt") 
print("Unzipping ...") 
with gzip.GzipFile(filename + ".gz", 'rb') as inF: 
    with file("unzip_text.txt", 'wb') as outF: 
     s = inF.read() 
     outF.write(s.encode('utf-8')) 

print("Content of unzip file is...") 
with open("unzip_text.txt") as fd: 
    for line in fd.readlines(): 
     print line 

Выход:

C:\Users\dinesh_pundkar\Desktop>python gz.py 
Please enter the text you want to compress: "My name is Dinesh" 
Please enter the desired filename: "dinesh" 
Name of file to be zipped is text.txt 
('Name of GZIP file is ', 'dinesh.gz') 
Zipping file... 
Name of unzipped file is unzip_text.txt 
Unzipping ... 
Content of unzip file is... 
My name is Dinesh 

C:\Users\dinesh_pundkar\Desktop> 
+0

Traceback (последний последний звонок): Файл «E: \ GCSE WORK \ Computing \ A 4.5.3 \ Coursework \ Task 3 \ Task 3.py», строка 13, в с gzip.open ('текст. txt.gz ',' rb ') в виде fd: Файл «C: \ Python33 \ lib \ gzip.py», строка 52, в открытом виде binary_file = GzipFile (имя файла, gz_mode, уровень сжатия) Файл «C: \ Python33 \ lib \ gzip.py ", строка 184, в __init__ fileobj = self.myfileobj = builtins.open (имя файла, режим или 'rb') FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'text.txt. gz ' >>> –

+0

Он приходит с этой ошибкой –

+0

Замените «text.txt.gz» на имя файла GZIP, созданного кодом выше –

0

Это ответ, как я нашел его на другой вопрос.

plaintext = input('Please enter some text') 
filename = 'foo.gz' 
with gzip.open(filename, 'wb') as outfile: 
    outfile.write(bytes(plaintext, 'UTF-8')) 
with gzip.open(filename, 'r') as infile: 
    outfile_content = infile.read().decode('UTF-8') 
print(outfile_content) 

Это сжимает вход, сохраняет его в файле, а также распаковать файл, чтобы сделать оригинальный вход. Затем этот распакованный ввод печатается в оболочку.

Смежные вопросы