Używam lxml.etree.iterparse()
do iteracji poprzez duży plik XML.Iterowanie XML z lxml w Pythonie: jak sprawdzić, ile danych wejściowych zostało przeczytanych?
Chciałbym wiedzieć, jak daleko zajmuję parsowanie pliku wejściowego, aby uzyskać wskaźnik postępu.
Moim pierwszym pomysłem było użycie os.stat(filename).st_size
, aby wiedzieć, jak duży jest mój plik XML, a następnie, gdy otrzymuję zdarzenia z parsera, pobierz aktualną pozycję w pliku. Ale nie mogę zrozumieć, w jaki sposób lxml.etree
może dać mi dostęp do swojej wewnętrznej pozycji. iterparse()
przyjmuje nazwę pliku jako jego argument source
, więc nie mogę otworzyć pliku i wywołać jego metodę tell()
, aby dowiedzieć się, ile bajtów zostało przeczytanych do tej pory.
Czy znasz dowolny wbudowany wskaźnik lxml.etree
dla bieżącego postępu analizatora składni? A może masz pomysł na integrację takiego rozwoju?
Oh Nice! Dokumentacja nie określa typu argumentu "source", a przykłady wykorzystują tylko nazwę pliku. –