[RÉSOLU] Lire fichier texte

Vous voulez de l'aide ? Postez ici :)
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

[RÉSOLU] Lire fichier texte

Post by davidyossef »

Bonjour,

j'ai un fichier texte semblable à cela

Code: Select all

00001
00002
00003
00004
00005
etc...
et j'aimerais demander à Actionaz de prendre le premier "00001" afin de l'écrire dans une page web.

Puis après quelques lignes de code, prendre le "00002" afin de l'écrire toujours dans la même page web.

Je pars du principe que c'est faisable, la grande question étant "Comment?".

Merci d'avance pour votre aide précieuse.
marto31
Posts: 45
Joined: 20 Oct 2011, 19:34

Re: Lire fichier texte

Post by marto31 »

Je crois pas que c'est possible de lire ligne par ligne dans un fichier texte, tu ne peu recuperer que tous le contenu.

En revanche si c'est les memes nombres que tu à mit dans ton exemple tu peux te servire d'une variable

par exemple:

$nombre = 00001

...

$nombre = $nombre + 1

...

$nombre = $nombre + 1
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

Re: Lire fichier texte

Post by davidyossef »

Je suis pourtant presque certain que c'est possible de lire dans un fichier ligne après ligne.

Et pour répondre à ta question, j'ai une liste de numéros complètement aléatoires.
marto31
Posts: 45
Joined: 20 Oct 2011, 19:34

Re: Lire fichier texte

Post by marto31 »

En effet tu a raison, http://wiki.actionaz.org/doku.php?id=fr ... adtextfile.

Après si tu a seulement besoin d'avoir un chiffre aléatoire à chaque fois tu peux utiliser une fonction qui te donne un chiffre aléatoire dans une action "code" comme par exemple :

Code: Select all

var nb = Math.floor(Math.random() * 12);
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Lire fichier texte

Post by Jmgr »

Voila un exemple :

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
    <settings program="actionaz" version="3.1.1" scriptVersion="1.0.0" os="GNU/Linux"/>
    <actions>
        <action name="ActionCode" version="1.0.0"/>
        <action name="ActionReadTextFile" version="1.0.0"/>
        <action name="ActionGoto" version="1.0.0"/>
        <action name="ActionMessageBox" version="1.0.0"/>
    </actions>
    <parameters/>
    <script pauseBefore="0" pauseAfter="0">
        <action name="ActionCode" comment="line = 1">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">var line = 1</subParameter>
            </parameter>
        </action>
        <action name="ActionReadTextFile" label="read" comment="read the line">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <exception id="32" action="0" line=""/>
            <parameter name="firstline">
                <subParameter name="value" code="1">line</subParameter>
            </parameter>
            <parameter name="mode">
                <subParameter name="value" code="0">selection</subParameter>
            </parameter>
            <parameter name="variable">
                <subParameter name="value" code="0">data</subParameter>
            </parameter>
            <parameter name="file">
                <subParameter name="value" code="0">file.txt</subParameter>
            </parameter>
            <parameter name="lastline">
                <subParameter name="value" code="1">line</subParameter>
            </parameter>
        </action>
        <action name="ActionMessageBox" comment="output data">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="windowIcon">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="message">
                <subParameter name="value" code="0">Data: $data</subParameter>
            </parameter>
            <parameter name="title">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="ifYes">
                <subParameter name="line" code="0"></subParameter>
                <subParameter name="action" code="0">do_nothing</subParameter>
            </parameter>
            <parameter name="customIcon">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="icon">
                <subParameter name="value" code="0">none</subParameter>
            </parameter>
            <parameter name="type">
                <subParameter name="value" code="0">ok</subParameter>
            </parameter>
            <parameter name="ifNo">
                <subParameter name="line" code="0"></subParameter>
                <subParameter name="action" code="0">do_nothing</subParameter>
            </parameter>
        </action>
        <action name="ActionCode" comment="line = line + 1">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">line++</subParameter>
            </parameter>
        </action>
        <action name="ActionGoto">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="line">
                <subParameter name="value" code="0">read</subParameter>
            </parameter>
        </action>
    </script>
</scriptfile>
Attention : il ne vérifie pas si la fin du fichier est atteinte, mais tu peux par exemple tester si la variable data est vide pour cela.
"My software never has bugs. It just develops random features."
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

Re: Lire fichier texte

Post by davidyossef »

Merci Marto31 et Jmgr pour vos réponses.
Une fois de plus, Jmgr me sauve la mise. Va falloir que je pense à sortir la CB pour lui faire un ptit virement à l'occasion... :mrgreen:

Je peaufine maintenant le script et je bloque sur le retour à la ligne dans un fichier de sortie.
Je m'explique: j'ai ajouté "Écrire fichier texte". Dans le premier onglet "Standard", "Paramètres d'entrée" je dois configurer le "Fichier" et le "Texte". J'ai donc sélectionné le bon fichier et dans texte j'ai écrit $data.

Mais pour que tout fonctionne dans le meilleur des mondes, il faudrait que j'arrive à écrire $data + "retour à la ligne" afin que les prochaines entrées "$data" soient à la ligne et non pas à la suite.

Merci beaucoup pour votre aide précieuse.
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Lire fichier texte

Post by Jmgr »

Le retour à la ligne c'est \n.
Par exemple $data + "\n"
"My software never has bugs. It just develops random features."
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

Re: Lire fichier texte

Post by davidyossef »

J'ai essayé avec

Code: Select all

$data\n

Code: Select all

$data \n

Code: Select all

$data"\n"

Code: Select all

$data "\n"
mais aucune de ces 4 tentatives n'a été fructueuse.
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

Re: Lire fichier texte

Post by davidyossef »

C'est bon, ça fonctionne.

Il fallait activer le petit triangle rouge en haut à gauche et entrer ceci :

Code: Select all

data + "\n"
Merci à tous!
Attention : il ne vérifie pas si la fin du fichier est atteinte, mais tu peux par exemple tester si la variable data est vide pour cela.
Jmgr, peux-tu me dire comment stopper le script quand la fin du fichier d'entrée a été atteinte? :wink:
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Lire fichier texte

Post by Jmgr »

Au temps pour moi, mon exemple n'était pas très clair.

En fait tu as deux solutions, soit en mode texte (sans le triangle rouge) tu peux ouvrir l'éditeur de texte multilignes avec le bouton à gauche du triangle et sauter une ligne.

Code: Select all

$data
mon texte à la ligne
Ou, comme tu l'as fait, en mode code (avec le triangle rouge) :

Code: Select all

data + "\n" + "mon texte à la ligne"
Jmgr, peux-tu me dire comment stopper le script quand la fin du fichier d'entrée a été atteinte?
Voila :

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
    <settings program="actionaz" version="3.1.1" scriptVersion="1.0.0" os="GNU/Linux"/>
    <actions>
        <action name="ActionCode" version="1.0.0"/>
        <action name="ActionReadTextFile" version="1.0.0"/>
        <action name="ActionGoto" version="1.0.0"/>
        <action name="ActionStop" version="1.0.0"/>
        <action name="ActionVariableCondition" version="1.0.0"/>
        <action name="ActionMessageBox" version="1.0.0"/>
    </actions>
    <parameters/>
    <script pauseBefore="0" pauseAfter="0">
        <action name="ActionCode" comment="line = 1">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">var line = 1</subParameter>
            </parameter>
        </action>
        <action name="ActionReadTextFile" label="read" comment="read the line">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <exception id="32" action="0" line=""/>
            <parameter name="firstline">
                <subParameter name="value" code="1">line</subParameter>
            </parameter>
            <parameter name="mode">
                <subParameter name="value" code="0">selection</subParameter>
            </parameter>
            <parameter name="variable">
                <subParameter name="value" code="0">data</subParameter>
            </parameter>
            <parameter name="file">
                <subParameter name="value" code="0">file.txt</subParameter>
            </parameter>
            <parameter name="lastline">
                <subParameter name="value" code="1">line</subParameter>
            </parameter>
        </action>
        <action name="ActionVariableCondition">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="ifEqual">
                <subParameter name="line" code="0">stop</subParameter>
                <subParameter name="action" code="0">goto</subParameter>
            </parameter>
            <parameter name="comparison">
                <subParameter name="value" code="0">equal</subParameter>
            </parameter>
            <parameter name="variable">
                <subParameter name="value" code="0">data</subParameter>
            </parameter>
            <parameter name="value">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="ifDifferent">
                <subParameter name="line" code="0"></subParameter>
                <subParameter name="action" code="0">do_nothing</subParameter>
            </parameter>
        </action>
        <action name="ActionMessageBox" comment="output data">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="windowIcon">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="message">
                <subParameter name="value" code="0">Data: $data</subParameter>
            </parameter>
            <parameter name="title">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="ifYes">
                <subParameter name="line" code="0"></subParameter>
                <subParameter name="action" code="0">do_nothing</subParameter>
            </parameter>
            <parameter name="customIcon">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="icon">
                <subParameter name="value" code="0">none</subParameter>
            </parameter>
            <parameter name="type">
                <subParameter name="value" code="0">ok</subParameter>
            </parameter>
            <parameter name="ifNo">
                <subParameter name="line" code="0"></subParameter>
                <subParameter name="action" code="0">do_nothing</subParameter>
            </parameter>
        </action>
        <action name="ActionCode" comment="line = line + 1">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">line++</subParameter>
            </parameter>
        </action>
        <action name="ActionGoto">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="line">
                <subParameter name="value" code="0">read</subParameter>
            </parameter>
        </action>
        <action name="ActionStop" label="stop">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
        </action>
    </script>
</scriptfile>
"My software never has bugs. It just develops random features."
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

Re: Lire fichier texte

Post by davidyossef »

T'assures Jmgr!
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

Re: Lire fichier texte

Post by davidyossef »

Bonsoir à tous.

Une info et une question ce soir:
:!: - la condition de variable permettant de stopper le script fait planter Actionaz à chaque fin de lecture du fichier d'entrée. Bug? Mais bon, ce n'est pas très grave. :wink:
:?: - quelqu'un sait-il comment exploiter désormais deux informations par ligne dans le fichier d'entrée, exemple:

Code: Select all

data1 data1bis
data2 data2bis
data3 data3bis
etc...
Pour être encore plus clair:
1) clic dans la case "à remplir" du navigateur web
2) copie de "data1" du fichier d'entrée, collage de "data1" dans la case "à remplir" puis pression touche "Entrée"
3a) si réponse négative pour "data1" => retour au début du script pour tester "data2"
3b) si réponse positive pour "data1" => copie de "data1bis" du fichier d'entrée, collage de "data1bis" dans la case "à remplir" puis pression touche "Entrée"
4a) si réponse négative pour "data1bis" => retour au début du script pour tester "data2"
4b) si réponse positive pour "data1bis" => copie de la ligne complète ("data1 data1bis") et collage dans fichier de sortie puis retour au début du script pour tester "data2"

En somme, dans mon fichier de sortie, il ne doit y avoir que les lignes dont les deux numéros ont obtenu des réponses positives aux tests.
Jmgr nous a montré comment tester un fichier contenant un numéro par ligne, comment faire avec deux numéros par ligne?

Par avance, un grand merci pour vos réponses.
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Lire fichier texte

Post by Jmgr »

- la condition de variable permettant de stopper le script fait planter Actionaz à chaque fin de lecture du fichier d'entrée. Bug? Mais bon, ce n'est pas très grave.
Bien vu, c'est un bug. Je corrige ça pour la prochaine version. (un crash ce n'est jamais très agréable)

Pour ta question je te conseilles d'utiliser la fonction Javascript split qui permet de couper une chaîne de caractères en deux à partir d'un séparateur :

Code: Select all

var s = "data1 data1bis".split(' ');
var first = s[0];
var second = s[1];
"My software never has bugs. It just develops random features."
davidyossef
Posts: 24
Joined: 25 Jul 2010, 17:57

Re: Lire fichier texte

Post by davidyossef »

Merci Jmgr pour ta réponse.

Dans son message du 01-01-2012 à 19:28:31, Jmgr nous donne un script qui fonctionne à merveille lorsque le fichier d'entrée ne comporte qu'une seule donnée par ligne.

Quelqu'un saurait-il adapter son code à deux données par ligne désormais?

Merci beaucoup à tous par anticipation.
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Lire fichier texte

Post by Jmgr »

Voila l'exemple modifié qui utilise la fonction split() du Javascript :

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
    <settings program="actionaz" version="3.1.1" scriptVersion="1.0.0" os="GNU/Linux"/>
    <actions>
        <action name="ActionGoto" version="1.0.0"/>
        <action name="ActionReadTextFile" version="1.0.0"/>
        <action name="ActionMessageBox" version="1.0.0"/>
        <action name="ActionCode" version="1.0.0"/>
        <action name="ActionVariableCondition" version="1.0.0"/>
        <action name="ActionStop" version="1.0.0"/>
    </actions>
    <parameters/>
    <script pauseBefore="0" pauseAfter="0">
        <action name="ActionCode" comment="line = 1">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">var line = 1</subParameter>
            </parameter>
        </action>
        <action name="ActionReadTextFile" label="read" comment="read the line">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <exception id="32" action="0" line=""/>
            <parameter name="firstline">
                <subParameter name="value" code="1">line</subParameter>
            </parameter>
            <parameter name="mode">
                <subParameter name="value" code="0">selection</subParameter>
            </parameter>
            <parameter name="variable">
                <subParameter name="value" code="0">data</subParameter>
            </parameter>
            <parameter name="file">
                <subParameter name="value" code="0">file.txt</subParameter>
            </parameter>
            <parameter name="lastline">
                <subParameter name="value" code="1">line</subParameter>
            </parameter>
        </action>
        <action name="ActionCode" comment="split the line">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">var s = String(data).split(' ');
var first = s[0];
var second = s[1];</subParameter>
            </parameter>
        </action>
        <action name="ActionVariableCondition">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="ifEqual">
                <subParameter name="line" code="0">stop</subParameter>
                <subParameter name="action" code="0">goto</subParameter>
            </parameter>
            <parameter name="comparison">
                <subParameter name="value" code="0">equal</subParameter>
            </parameter>
            <parameter name="variable">
                <subParameter name="value" code="0">first</subParameter>
            </parameter>
            <parameter name="value">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="ifDifferent">
                <subParameter name="line" code="0"></subParameter>
                <subParameter name="action" code="0">do_nothing</subParameter>
            </parameter>
        </action>
        <action name="ActionMessageBox" comment="output data">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="windowIcon">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="message">
                <subParameter name="value" code="0">First: $first
Second: $second</subParameter>
            </parameter>
            <parameter name="title">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="ifYes">
                <subParameter name="line" code="0"></subParameter>
                <subParameter name="action" code="0">do_nothing</subParameter>
            </parameter>
            <parameter name="customIcon">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="icon">
                <subParameter name="value" code="0">none</subParameter>
            </parameter>
            <parameter name="type">
                <subParameter name="value" code="0">ok</subParameter>
            </parameter>
            <parameter name="ifNo">
                <subParameter name="line" code="0"></subParameter>
                <subParameter name="action" code="0">do_nothing</subParameter>
            </parameter>
        </action>
        <action name="ActionCode" comment="line = line + 1">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">line++</subParameter>
            </parameter>
        </action>
        <action name="ActionGoto">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="line">
                <subParameter name="value" code="0">read</subParameter>
            </parameter>
        </action>
        <action name="ActionStop" label="stop">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
        </action>
    </script>
</scriptfile>
"My software never has bugs. It just develops random features."
Post Reply