7
votes

Existe-t-il une limite de longueur de ligne pour les fichiers texte créés à partir de Perl?

En écrivant un script Perl, j'ai besoin d'écrire les noms d'utilisateur avec une séparation des virgules dans une seule ligne du fichier.

C'est pourquoi je voudrais savoir s'il existe une restriction sur la taille maximale de la ligne dans le fichier .txt.


1 commentaires

Quelle taille de fichier espérez-vous créer?


7 Réponses :


14
votes

Les fichiers texte sont comme tous les autres fichiers et le caractère Newline est comme n'importe quel autre caractère, que seules les restrictions de fichiers habituelles appliquent (la limite de taille 4 Go sur les systèmes de fichiers plus anciens, le fichier doit s'adapter sur le disque, etc.)

Vous ne rencontrerez aucun problème de lecture et d'écriture, sauf si vous le lisez la ligne par ligne - vous pouvez manquer de mémoire, puis rencontrer un débordement de la mémoire tampon. Cela peut arriver dans n'importe quel éditeur de texte ou programme de traitement de texte (tel que SED ou AWK), car, contrairement au noyau du système d'exploitation, dans ces domaines de séparation des lignes

Je suggérerais de garder un utilisateur par ligne, car il est plus naturel de lire et de réduire les erreurs lorsque vous traitez le fichier avec un programme externe.


6 commentaires

Au moins Kwrite et VI ne sont pas affectés par la taille de la ligne (testé sur un fichier XML à ligne unique de 4 Mo)


Il y a certainement une limite. Il doit s'adapter sur le disque et si vous le lisez en ligne, il doit correspondre à la mémoire. En plus de cela, vous aurez peut-être besoin d'un support de fichier important pour traiter des fichiers de plus de 4 Go.


@brian D FOY: Depuis que vous êtes plus expérimenté ici, je suis donc à la suite de votre conseil et je joue au capitaine évident, alors maintenant mon message indique qu'un fichier sur un disque ne doit pas dépasser la taille de ce disque. Soupir.


Rien n'est évident. Vous pourrez peut-être créer une chaîne dans Perl que vous ne pouvez pas enregistrer sur votre disque complet, mais que vous pouvez vous installer dans la mémoire de programme, vous ne pouvez pas avoir suffisamment de mémoire de programme pour lire un fichier entier en une fois. Ce sont de vrais problèmes que vous devez gérer lorsque vous jouez avec de très grandes chaînes et dossiers, mais la plupart des gens n'y pensent jamais.


@brian D FOY: D'accord, vous dites de nombreuses bonnes choses que tout le monde se souvienne de. Mais vous n'avez-vous pas remarqué que le sujet a changé de "nouvelles lignes et de systèmes d'exploitation" pour "gérer des fichiers volumineux"? Êtes-vous sûr que c'est la bonne façon d'y aller?


Suis-je sûr de quoi est la bonne façon? Si vous parlez de lignes, voyez ma réponse.



3
votes

Il n'y a pas de limite de taille à l'exception de votre système de fichiers qui est le plus probablement 2 To ou quelque chose.


0 commentaires

3
votes

Non, il n'y a pas de limite de ce type avant de toucher des limites de taille de fichier.


0 commentaires

1
votes

sur certains anciens systèmes UNIX, certains utilitaires de texte (par exemple rejoindre, trier et même quelques vieilles aiguisés) ont une limite sur la taille maximale de la ligne. Je pense que c'est la limite des services publics mais pas le système d'exploitation. Les utilitaires GNU n'ont pas une telle limite autant que je sache et donc Linux n'a jamais ce problème.


1 commentaires

J'avais l'habitude d'avoir ce problème sur une ancienne version d'Irix et de Aix. Ensuite, j'ai installé GNU Texttils (non fusionné sur Coreutils) dans mon annuaire de domestique, qui a résolu le problème



-1
votes

La taille du fichier dépend du système de fichiers de votre système d'exploitation. Les outils n'ont aucune limite pour tel (ou au moins, je n'ai jamais vu aussi loin ..)


1 commentaires

Certains outils ont des limites car ils utilisent un espace d'adresses INT de quatre octets, c'est pourquoi il y a un support de fichier important dans certains outils.



4
votes

La seule chose que vous devez vous inquiéter est la taille du fichier que vous pouvez créer et la taille du fichier que vous pouvez lire.

Les ordinateurs ne savent rien des lignes, qui est une interprétation de la octets dans un fichier. Nous décidons qu'il existe une séquence de caractères qui délimitent la fin d'une ligne, puis dites à nos programmes de saisir des objets hors du fichier jusqu'à ce qu'il frappe cette séquence. Pour nous, c'est une ligne.

Par exemple, vous pouvez définir une ligne dans votre fichier texte à la fin avec une virgule: xxx même si On dirait que j'ai une seule ligne sous __ données __ , ce n'est que parce que nous sommes habitués à des livres. Les ordinateurs ne lisent pas de livres. Au lieu de cela, ce programme pense que tout entre les virgules est une ligne: xxx


0 commentaires

2
votes

Je viens de contourner un tel problème avec une ligne d'environ 1 million de chrrs à Kwrite.

Bien qu'il n'y ait pas de limite théorique, si vous souhaitez travailler sur votre fichier, vous devez avoir la ligne enveloppée pour afficher la largeur. À chaque édition, de nombreux calculs sont effectués, une perchage impliquant la mémoire d'échange. Thar fait édition maladroite. Les longues lignes peuvent être assez gênantes.


0 commentaires