Korzystam z poniższego kodu, aby wyodrębnić pliki .tgz
. Typ plików dziennika (.tgz
), które muszę wyodrębnić, mają podkatalogi, w których znajdują się inne pliki .tgz
i pliki . Też chcę je wydobyć.Chcę wyodrębnić plik .tgz i wyodrębnić wszystkie podkatalogi, które mają pliki .tgz i .tar
Ostatecznie próbuję wyszukać określone ciągi we wszystkich plikach .log
i .txt
, które mogą pojawić się w pliku .tgz
. Jest to kod, którego używam do wyodrębnienia pliku .tgz
. Próbowałem dowiedzieć się, jak wyodrębnić pliki podrzędne (.tgz
i .tar
). Do tej pory nie udało mi się.
import os, sys, tarfile
try:
tar = tarfile.open(sys.argv[1] + '.tgz', 'r:gz')
for item in tar:
tar.extract(item)
print 'Done.'
except:
name = os.path.basename(sys.argv[0])
print name[:name.rfind('.')], '<filename>'
Wydaje się to być doskonałym przypadkiem użycia dla rekursji. Podajesz pierwszy plik tar do funkcji i jeśli napotka inny plik tar, funkcja wywołuje się z nowym plikiem tar. Jeśli znajdziesz plik dziennika, możesz wywołać inną funkcję, która obsługuje pliki logów. – Jacob