page 4 les fichiers

a) actions sur des fichiers ou répertoires

Voici comment réaliser des actions sur les fichiers :

Copier un fichier

file copy /monfichier /monrepertoiredestination

file copy /home/user/monfichier /home/user/

 


Copier des fichiers

file copy fichier1 fichier2 fichier3 /madestination

file copy file1.txt file2.txt file3.txt /home/user/

 


Effacer un fichier

Pour effacer un fichier :

file delete file1.txt

 


Effacer plusieurs fichiers

Pour effacer plusieurs fichiers :

file delete file1.txt file2.txt

 


Tester si un fichier existe

Pour savoir si un fichier existe :

set bob [file exist file1.txt]

$bob = 1 : le fichier est présent

$bob = 0 : Le fichier est absent

 


Tester si un fichier est un exécutable

set bob [file executable file1.txt]

$bob = 1 : le fichier est un éxécutable

$bob = 0 : Le fichier n'est pas exécutable

 

 


Connaitre l'extention du fichier

set bob [file extension file1.txt]

renverra :

txt

 


Savoir si un chemin pointe un répertoire

set bob [file isdirectory file1.txt]

$bob = 1 : C'est un répertoire

$bob = 0 : Ce n'est pas un répertoire

 


Savoir si un chemin pointe vers un fichier

set bob [file isfile file1.txt]

$bob = 1 : C'est un fichier

$bob = 0 : Ce n'est pas un fichier.

 


Créer un répertoire

Pour créer un répertoire :

file mkdir /home/user/hello

créera le répertoire hello

 


Renommer un fichier

Pour renommer un fichier ou un répertoire :

file rename /home/user/file1.txt /home/user.file2.txt

 


Connaître la taille d'un fichier ou répertoire

Pour connaître la taille d'un fichier ou répertoire :

file size /home/user/bobi.txt

renverra 10000 bytes

 


 

 

b) traitement d'un fichier texte

ouvrir un fichier texte

Pour ouvrir un fichier texte et le stocker dans une variable (file_data par exemple)

set fp [open "chemindufichier" r]
set file_data [read $fp]
close $fp

Les données texte seront stockés dans la variable $file_data

 


ENREGISTRER UN FICHIER TEXTE

La sauvegarde s'effectue ainsi:

  • Ouvrir le fichier en écriture
  • Ecrire dans le fichier
  • Fermer le fichier

voici un exemple

set monfichier [open "lechemin/fichier.txt" "w"]
puts $monfichier $montexte
close $monfichier

 


Séparer chaque ligne d'un fichier texte ouvert.

Le fichier ainsi ouvert nous pouvons traiter chaque ligne dans une boucle forearch comme ceci :

set data [split $file_data "\n"]
foreach line $data {
     # traite chaque ligne...
}

 


extraire le nom d'un fichier depuis un chemin complet

Soit par exemple le chemin complet d'un fichier sous la forme :

/home/utilisateur/hier/demain/afaire/monfichier.txt

pour ne récupérer que le nom du fichier il suffit de séparer la chaine avec le caractère / puis de créer une liste.

Enfin; il suffit de trouver le dernier élément de la liste. Voici le code :

set machaine "/home/utilisateur/hier/demain/afaire/monfichier.txt"
set maliste [ split $machaine "/" ]
set lefichier [lindex $maliste [ expr [ llength $maliste ] -1  ]]

Vous l'aurez certainement compris pour la dernière ligne, pour trouver l'index du dernier item de la liste il faut calculer la longueur de la liste maliste moins un (car la liste commence par 0)

Enfin, j'utilise la commande expr car on ne peut calculer la somme d'une chaine de caractères, il faut dire à tcl qu'il s'agit d'entiers.

 

<<sommaire | page 3(les boucles) | page 5(chaines de caractères)