Ecriture dans un fichier en memoire(cache)
wass
Messages postés
10
Statut
Membre
-
jipo Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
jipo Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
bonjour ,
voici mon probleme,
tout d'abord J'utilise PERL
j'utilise html parser et html tokeparser pour le parsing d'un site,
le probleme c'est que ces deux modules utilisent des fichiers obligatoiremnt (enfin je crois)
et ce que je voudrais c'est ecrire des fichiers en memoire (cache) sans les creer physiquemnt pr des raisons de rapidité de traitemnt et car ils ne me servent à rien en plus pr plutard;
est-il possible de faire ca? sinon est ce qu'il y a un equivalent de html parser et de tokeparser pr faire le parsing en utilisant directmnt des variables qui contiennent le cntenu d'une page web ou en utilisnt le acche dirctmnt?
Merci pour votre aide
voici mon probleme,
tout d'abord J'utilise PERL
j'utilise html parser et html tokeparser pour le parsing d'un site,
le probleme c'est que ces deux modules utilisent des fichiers obligatoiremnt (enfin je crois)
et ce que je voudrais c'est ecrire des fichiers en memoire (cache) sans les creer physiquemnt pr des raisons de rapidité de traitemnt et car ils ne me servent à rien en plus pr plutard;
est-il possible de faire ca? sinon est ce qu'il y a un equivalent de html parser et de tokeparser pr faire le parsing en utilisant directmnt des variables qui contiennent le cntenu d'une page web ou en utilisnt le acche dirctmnt?
Merci pour votre aide
A voir également:
- Ecriture dans un fichier en memoire(cache)
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
4 réponses
Salut,
Créer des fichiers en mémoire ce n'est pas possible.
En revanche tu peux stocker dans une variable tableau le fichier que tu veux traiter.
Mais en ce cas tu es limité à ta mémoire vive. Si tu as des grands fichiers je ne pense pas que tu va gagner en rapidité. En plus tu risques d'infliger une sacré correction à ta mémoire virtuelle, en bref un plantage.
Cette solution est envisageable pour des petits fichiers.
En revanche si tu peux créer de fichiers temporaires ensuite après le traitement tu n'as qu'à les supprimer.
Une autre posibilité c'est de modifier des fichiers sur place sans avoir besoin de fichiers temporaires.
lami20j
Créer des fichiers en mémoire ce n'est pas possible.
En revanche tu peux stocker dans une variable tableau le fichier que tu veux traiter.
Mais en ce cas tu es limité à ta mémoire vive. Si tu as des grands fichiers je ne pense pas que tu va gagner en rapidité. En plus tu risques d'infliger une sacré correction à ta mémoire virtuelle, en bref un plantage.
Cette solution est envisageable pour des petits fichiers.
En revanche si tu peux créer de fichiers temporaires ensuite après le traitement tu n'as qu'à les supprimer.
Une autre posibilité c'est de modifier des fichiers sur place sans avoir besoin de fichiers temporaires.
lami20j
bonjour,
au fait, mes fichiers ne sont pas très volumineux, c'est des fichiers html ou fichiers textes qui font autour de 8K chacun, et je traite un seul fichier à la fois. Ce serait quand meme penalisant pour la memoire vive?
"Une autre posibilité c'est de modifier des fichiers sur place sans avoir besoin de fichiers temporaires. " qu'est ce que tu veux dire par là stp?
Merci d'avacne pour ta réponse lami20j
au fait, mes fichiers ne sont pas très volumineux, c'est des fichiers html ou fichiers textes qui font autour de 8K chacun, et je traite un seul fichier à la fois. Ce serait quand meme penalisant pour la memoire vive?
"Une autre posibilité c'est de modifier des fichiers sur place sans avoir besoin de fichiers temporaires. " qu'est ce que tu veux dire par là stp?
Merci d'avacne pour ta réponse lami20j
Salut,
c'est des fichiers html ou fichiers textes qui font autour de 8K chacun, et je traite un seul fichier à la fois. Ce serait quand meme penalisant pour la memoire vive?
Aucun souci pour des petits fichiers.
"Une autre posibilité c'est de modifier des fichiers sur place sans avoir besoin de fichiers temporaires. " qu'est ce que tu veux dire par là stp?
Voilà un exemple.
J'ai créé un fichier dans lequel délibérément j'ai fait des erreurs.
Le script corrige sur place le fichier sans créer un fichier tempoire.
En revanche dans des situations de ce genre, vaux mieux sauvegarder le fichier original
(c'est -i.orig qui le fait)
Le fichier original nombre.txt sera sauvegarder avec le nom, nombre.txt.orig .
Le fichier original.
Exécution du script qui va modifier sur place le fichier
et il va sauvegarder l'original.
Le résultat
Le fichier original
c'est des fichiers html ou fichiers textes qui font autour de 8K chacun, et je traite un seul fichier à la fois. Ce serait quand meme penalisant pour la memoire vive?
Aucun souci pour des petits fichiers.
"Une autre posibilité c'est de modifier des fichiers sur place sans avoir besoin de fichiers temporaires. " qu'est ce que tu veux dire par là stp?
Voilà un exemple.
J'ai créé un fichier dans lequel délibérément j'ai fait des erreurs.
Le script corrige sur place le fichier sans créer un fichier tempoire.
En revanche dans des situations de ce genre, vaux mieux sauvegarder le fichier original
(c'est -i.orig qui le fait)
Le fichier original nombre.txt sera sauvegarder avec le nom, nombre.txt.orig .
#!/usr/bin/perl -i.orig
use warnings;use strict;
my $pair = '2 4 6 8';
my $impair = '1 3 5 7 9';
my $premier = '1 2 3 5 7';
while ( <> ) {
s/(.*:)(.*)/$1$pair/ if /\bpair/;
s/(.*:)(.*)/$1$impair/ if /impair/;
s/(.*:)(.*)/$1$premier/ if /premier/;
print;
}
Le fichier original.
$ cat wass.txt nb pair :1 2 3 5 7 nb impair :2 4 6 8 nb premier :1 3 5 7 9
Exécution du script qui va modifier sur place le fichier
et il va sauvegarder l'original.
$ perl ccm_wass_ecriture_dans_un_fichier_en_memoire.pl wass.txt
Le résultat
$ cat wass.txt nb pair :2 4 6 8 nb impair :1 3 5 7 9 nb premier :1 2 3 5 7
Le fichier original
$ cat wass.txt.orig nb pair :1 2 3 5 7 nb impair :2 4 6 8 nb premier :1 3 5 7 9lami20j