Извлечение одного файла из архива .7z с помощью команды Line line, вызываемой из python - PullRequest
0 голосов
/ 07 мая 2019

Это мой первый пост, поэтому заранее благодарю за несомненно полезный совет.

Я запускаю скрипт на python, для которого требуются файлы .tif в качестве входных данных. Эти файлы в настоящее время хранятся как .7z. У меня недостаточно места на жестком диске, чтобы разархивировать все файлы одновременно. Поэтому я хотел бы открыть один файл из .7z, запустить скрипт python, удалить .tif, а затем повторить в цикле. Тем не менее, я не могу заставить распаковку работать только для одного файла. Либо он вообще не работает, либо извлекает весь архив.

###Get a list of all the files in the archive
archive7z = path+file1

p = Popen(['7z', 'l', archive7z, '>> list.txt'], stdin=PIPE, stdout=PIPE, stderr=PIPE)
output, err = p.communicate(b"input data that is passed to subprocess' stdin")
rc = p.returncode
data = pd.read_fwf('/home/user/list.txt', skiprows= 18, sep='\s+')
my_list = data["Name"].values
ml= my_list.tolist()

#loop through list of files de-compressing one at a time
for item in ml:
    if item.endswith('.tif'):
        unzipper = item
        os.system('/home/ecf31/p7zip/7z e' + ' ' + '-i@'+unzipper + '_' archive7z)
    rest of script doing stuff with the tiff
    os.remove(.tif)
    #on to the next file


...