У меня есть файл .gz размером 70 ГБ, который я пытаюсь распаковать и сохранить в другом каталоге, но пока безуспешно.
Вот некоторые вещи, которые я пробовал:
import gzip
f = gzip.open('/directory1/file.txt.gz', 'rb')
decompressed_file = gzip.GzipFile(fileobj=f)
with open('/directory2/file.txt', 'wb') as s:
s.write(decompressed_file.read())
s.close
Когда я запускаю указанное выше, создается '/directory2/file.txt', но файл пуст и терминал завершает процесс.
import subprocess
subprocess.run(['zcat', '/directory1/file.txt.gz', '>', '/directory2/file.txt'])
Эта команда zcat отлично работает при выполнении в терминале, но при запуске в Python все содержимое распаковываемого файла выводится на консоль. Это, очевидно, резко замедляет декомпрессию. Удаленный сервер, на котором я запускаю эти команды, имеет ограничение по времени, которое завершит процесс до его завершения.
subprocess.run(['zcat', '/directory1/file.txt.gz', '>', '/directory2/file.txt'], stdout = subprocess.PIPE)
Когда я запускаю вышеуказанное, я получаю следующую ошибку:
File "/usr/lib64/python3.6/subprocess.py", line 425, in run
stdout, stderr = process.communicate(input, timeout=timeout)
File "/usr/lib64/python3.6/subprocess.py", line 850, in communicate
stdout = self.stdout.read()
OSError: [Errno 14] Bad address
Что я делаю неправильно, или как правильно sh выполнить то, что я пытаюсь сделать? Такое ощущение, что распаковать файл .gz и сохранить его в другом каталоге должно быть тривиально, но пока мне не повезло.