wow - Penso che questa sia davvero una domanda davvero interessante! Se capisco la tua domanda, vuoi essere in grado di STIMARE il numero di righe in un file, senza dover iterare attraverso il file. Mi vengono in mente alcune cose:
STIMA basata sulla dimensione del file
La stima presuppone sempre un compromesso: un'approssimazione ragionevole con meno lavoro è migliore di un valore assoluto con più lavoro. Mi piace la tua idea di stabilire una dimensione di linea media; di solito i tuoi file seguono lo stesso schema (ad esempio, le coordinate {x, y, z} di alcuni esperimenti), allora sarebbe ragionevole presumere che un file possa essere composto da:
HEADER
{x, y, z}(1),
{x, y, z}(2),
...
{x, y, z}(n)
FOOTER
Se HEADER e FOOTER hanno lo stesso modello in tutti i file, puoi quasi ignorarli come costanti. Il che significa che ti rimane una dimensione del file che dipende dal numero di righe di {x, y, z}. Potresti fare qualche ipotesi (basata sull'osservazione) della dimensione media di queste righe e quindi fare la tua stima da lì. Non c'è motivo per cui questo scenario non possa essere adattato a nessuna situazione in cui il file segua un formato particolare (ovviamente se il file non ha un formato normale allora sarà difficile).
Alternativa: inserisci il numero di linee in HEADER
Usando l'abilità di python per iterare su un file, potresti calcolare il numero di linee una volta, e poi puoi interrogare questo valore tutte le volte che vuoi (pensaci come ordinare un array una volta, e poi fare una ricerca binaria su di esso molte volte ). Se hai regolarmente bisogno di sapere quante righe ci sono in un file, questo potrebbe essere un modo ragionevole ed accurato per farlo.
In python, puoi contare il numero di linee senza dover caricare l'intero file in memoria:
number_lines = sum(1 for line in open(my_file))
Anche l'utilizzo di un generatore come questo è ottimizzato in Python, quindi è veloce quanto Python:)