2009-09-19 13 views
6

Durante la scrittura di uno script Perl, ho ricevuto l'obbligo di scrivere i nomi utente con separazione delle virgole in una sola riga del file.Esiste un limite di lunghezza per i file di testo creati da Perl?

Ecco perché mi piacerebbe sapere se esiste qualche restrizione sulla dimensione massima della linea nel file .txt.

+1

Quali sono le dimensioni del file che si prevede di creare? –

risposta

12

I file di testo sono proprio come qualsiasi altro file e il carattere di nuova riga è come qualsiasi carattere Othe, in modo che solo le restrizioni al solito Archivio dimensioni si applicano (limite di dimensione dei file 4Gb su sistemi più vecchi, file deve stare su disco, ecc)

Non incontrerai nessun problema nel leggerlo e scriverlo, a meno che non lo stia leggendo riga per riga: puoi esaurire la memoria o incontrare un eccesso di buffer. Ciò può accadere in qualsiasi editor di testo o programma di elaborazione testi (come sed o awk), perché, a differenza del kernel del sistema operativo, in quelle linee di separazione è importante

Suggerirei di mantenere un utente per riga, poiché è più naturale leggere e meno soggetto a errori quando si elabora il file con un programma esterno.

+0

Almeno kwrite e vi non vengono influenzati dalla dimensione della linea (testata su un file XML a linea singola da 4Mb) –

+0

Esiste sicuramente un limite. Deve adattarsi al disco e, se lo si legge riga per riga, deve essere inserito nella memoria.In aggiunta a ciò, potresti avere bisogno di un supporto di file di grandi dimensioni per gestire file di oltre 4 GB. –

+0

@brian d foy: dato che sei più esperto qui, oltre SO, seguo i tuoi consigli e giocando a Captain Obvious, quindi ora il mio post dice che un file su un disco non deve superare le dimensioni di quel disco. Sospiro. –

3

Non ci sono limiti di dimensione eccetto il file system che è probabilmente il 2TB o qualcosa del genere.

2

No, non esiste tale limite finché non si raggiungono limiti di dimensioni file.

1

Su alcuni vecchi sistemi Unix, alcune utilità di testo (ad esempio join, sort e anche qualche vecchio awk) hanno un limite sulla dimensione massima della linea. Penso che questo sia il limite delle utilità ma non del sistema operativo. Le utility GNU non hanno un limite tale per quanto ne so e quindi Linux non ha mai questo problema.

+0

Avevo questo problema su una vecchia versione di IRIX e AIX. Poi ho installato GNU textutils (non unito a coreutils) nella mia home directory, che ha risolto il problema – user172818

-1

la dimensione del file dipende dal sistema di file del sistema operativo. Strumenti non ha limiti per tale (o almeno non l'ho mai visto fino ad ora ..)

+0

Alcuni strumenti hanno dei limiti perché usano uno spazio di indirizzo int di quattro byte, motivo per cui c'è un supporto di file di grandi dimensioni in alcuni strumenti. –

3

L'unica cosa di cui devi preoccuparti è la dimensione del file che puoi creare e la dimensione del file che può leggere

I computer non conoscono nulla sulle linee, che è un'interpretazione dei byte in un file. Decidiamo che ci sia una sequenza di caratteri che delimitano la fine di una riga, e poi diamo ai nostri programmi di estrarre le cose dal file fino a quando non raggiunge quella sequenza. Per noi, questa è una linea.

Per esempio, è possibile definire una linea nel file di testo per terminare con una virgola:

$/ = ','; 

while(<DATA>) 
    { 
    chomp; 
    print "Line is: $_\n"; 
    } 

__DATA__ 
a,b,c,d,e,f,g 

anche se sembra come se avessi una sola linea sotto __DATA__, è solo perché siamo abituati a libri. I computer non leggono libri. Invece, questo programma pensa che tutto tra le virgole è una linea:

Line is: a 
Line is: b 
Line is: c 
Line is: d 
Line is: e 
Line is: f 
Line is: g 
2

Ho appena incontrato un tale problema con una linea di circa 1 m di lunghezza chrs in Kwrite.

Anche se non esiste un limite teorico, se si lavora sul file, è necessario che la riga venga spostata per visualizzare la larghezza. Ad ogni modifica, vengono eseguiti molti calcoli, anche se si tratta della memoria di scambio. Thar rende l'editing maldestro. Le linee lunghe possono essere piuttosto scomode.

Problemi correlati