Aller au contenu

[Résolu] Lire un fichier texte


Messages recommandés

Posté(e)

Bonjour à tous,

 

Je cherche à lire le contenu d'un fichier texte.

J'utilise la fonction minimaliste ci-dessous pour tester, et j'ai en retour : type d'argument incorrect: FILE nil.

 

(defun c:lecturetexte()

(setq fichier (open "c:/debois/44.txt" "r")) ;j'ai testé aussi (setq fichier (open "c:\\debois\\44.txt" "r"))

(setq ligne (read-line fichier))

(print ligne)

(close fichier)

)

 

Le fichier existe bien dans le dossier, et est non vide. Généré via excel, il contient ce type d'éléments :

44 0 14.0

44 27.935 15.2

44 55.87 15.9

44 111.74 16.2

 

Je ne trouve pas ce qui me bloque... Avez vous une idée ?

 

Merci par avance !

Julien.

Posté(e)

Bonjour,

 

Ton code est bon, il n'y a pas d'erreur.

La seule erreur possible pourrait venir de là: "c:/debois/44.txt" (fixé en dur dans ton code) et que ceci ne corresponde pas à au contenu de ton disque; ça je ne peux le vérifier.(un accent, un espace, une majuscule ....??)

 

Pour éventuellement résoudre ton problème, essayes d'utiliser la fonction (getfiled):

(setq fichier (open (getfiled "Fichier texte à ouvrir" "" "txt" 8) "r"))

 

Pendant les tests antérieurs que t'aurais pus faire, si le fichier n'a pas été fermé (close fichier), cela peut aussi créer des problèmes ultérieures. Ferme ta session et recommence tes tests dans une nouvelle session; Autocad se charge de fermer les fichiers qui seraient resté ouvert...

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Merci bonuscad,

 

avec getfiled, ça fonctionne impéc..., et ça a débloqué la situation... tout refonctionne maintenant, même mon ancien code.

 

Je ne comprend pas ce qui a cloché avant... effectivement j'ai la même conclusion, le prob se situait au niveau du fichier, même si je n'ai pas compris la raison exacte (peut-etre un fichier verrouillé, ou un truc du genre).

 

Pour info, voila donc mon programme test modifié (avec ou sans boucle, enlever les commentaires) :

(defun c:lecturetexte()

 

(setq fichier (open (getfiled "Selectionnez le fichier support" "c:/debois/" "txt" 8) "r"))

; (while

(setq ligne (read-line fichier))

(print ligne)

; )

(close fichier)

)

 

j'ai intégré ça dans mon programme principal (le nom "en dur" est saisi, ou généré en fonction de l'axe sur lequel on clique).

Je reviendrai si j'ai d'autres blocages.

 

Merci encore pour ta réponse !!!

Ju.

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité