У меня есть файл .gz
, и мне нужно получить имя файла внутри него с помощью python.Как указать содержимое gz-файла без его извлечения в python?
Этот вопрос так же, как this one
Единственное отличие состоит в том, что мой файл .gz
не .tar.gz
поэтому tarfile
библиотека не помогло мне здесь
Я использую requests
библиотеку для запроса URL. Ответ представляет собой сжатый файл.
Вот код, я использую, чтобы загрузить файл
response = requests.get(line.rstrip(), stream=True)
if response.status_code == 200:
with open(str(base_output_dir)+"/"+str(current_dir)+"/"+str(count)+".gz", 'wb') as out_file:
shutil.copyfileobj(response.raw, out_file)
del response
Этот код загружает файл с именем 1.gz
, например. Теперь, если я открою файл с помощью архивного ящика, файл будет содержать что-то вроде my_latest_data.json
Мне нужно извлечь файл, а вывод будет my_latest_data.json
.
Вот код, я использую, чтобы извлечь файл
inF = gzip.open(f, 'rb')
outfilename = f.split(".")[0]
outF = open(outfilename, 'wb')
outF.write(inF.read())
inF.close()
outF.close()
Переменная outputfilename
является строкой я обеспечиваю в сценарии, но мне нужно реальное имя файла (my_latest_data.json
)
Проблема заключается в том, что GZIP является * только * сжатие, не обязательно архив. Внутри не может быть манифеста внутри, чтобы даже смотреть. – zxq9
Какая ошибка? Где код, который вы пробовали? Ваш вопрос непонятен. –
Добавляя к тому, что @ zxq9 сказал, gzip отличается от Zip-файла (архива) тем, что он может «содержать» только один файл. Единственное, что может иметь это оригинальное имя файла. –