IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

supprimer un fichier


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut supprimer un fichier
    Comment supprimer proprement un fichier?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    	my $fich_fsa = 'P:/Theorie/YANN/Fadoua/mutation_seq/ref_ali/'.$id.'.fsa';
    	my $fich_msf = 'P:/Theorie/YANN/Fadoua/mutation_seq/ref_ali/'.$id.'.msf';
     
     
    	my @params = (	
     
    		'gapopen' => 15,
    		'PAIRGAP' => 0,
    		'ktuple' => 4, 
    		'type' => 'dna', 
    		'outfile' => $fich_msf, 
    		'format' => 'Fasta',
    		'outorder' => 'aligned',
    	);
     
    	# and pass the factory a reference to that array
    	my $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params);
    	$factory->executable("C:/ClustalW2/clustalw2.exe");
     
     
    	my $aln = $factory->align($seq_array_ref);
     
    	# création du fichier fasta
    	my $in_msf  = Bio::AlignIO->new(-file => $fich_msf , -format => 'msf');
    	my $out_fsa = Bio::AlignIO->new(-file => ">".$fich_fsa , -format => 'fasta');
     
    	while ( $aln = $in_msf->next_aln() ) {
    	    $out_fsa->write_aln($aln);
    	}
     
    	close ($fich_fsa);
    	close ($fich_msf);
     
     
    	unlink ['P:/Theorie/YANN/Fadoua/mutation_seq/ref_ali/'.$id.'.msf'];
    J'utilise donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	unlink ['P:/Theorie/YANN/Fadoua/mutation_seq/ref_ali/'.$id.'.msf'];
    J'ai essayé plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	my @file = ('P:/Theorie/YANN/Fadoua/mutation_seq/ref_ali/'.$id.'.msf');
     
    	unlink @file;
    mais ça ne va pas non plus.


    merci pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut
    Qu'as tu comme message d'erreur?

    avec ceci cela fonctionne parfaitement, le fichier est bien supprimé sans message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $file = "essai";
    unlink $file or die "Could not delete the file: $file\n";

  3. #3
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Merci pour ta réponse

    ne faut-il pas un array en argument à unlink?


    Pour répondre à ta question, je n'avais aucun message d'erreur mais le fichier ne s'effaçait pas.

    Ton code ne fonctionne pas non plus, on entre dans le die.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unlink @files or die "Could not delete the file(s) : $!\n";

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Citation Envoyé par djibril Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unlink @files or die "Could not delete the file(s) : $!\n";
    Attention, unlink retourne le nombre de fichiers supprimés, ainsi, si un seul fichier n'est pas supprimé dans la liste, le résultat de unlink ne sera pas faux, et le die n'aura pas lieu.

    Il serait donc préférable d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (unlink @files) != @files or die "Could not delete one or more files : $!\n";

  6. #6
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Attention, unlink retourne le nombre de fichiers supprimés, ainsi, si un seul fichier n'est pas supprimé dans la liste, le résultat de unlink ne sera pas faux, et le die n'aura pas lieu.

    Il serait donc préférable d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (unlink @files) != @files or die "Could not delete one or more files : $!\n";
    Ok merci

    Donc, je dois écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (unlink ['P:/Theorie/YANN/Fadoua/mutation_seq/ref_ali/'.$id.'.msf']) or print "Could not delete the file: $id\n";

  7. #7
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    je ferme le fichier ouvert en lecture, puis j'essaie de le supprimer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	close ($fich_msf);	
     
    	unlink $fich_msf or print $out_file_log "Could not delete the file: $id\t$!\n";
    mais j'obtiens le message :
    Could not delete the file: TEM_souche_A Permission denied

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Je doute que $fich_msf soit un nom de fichier s'il est utilisé dans close (mais un file handle). Or, unlink n'accepte que des noms de fichiers.

  9. #9
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Voici le code en entier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    	my $seq_array_ref = $_[0];
    	my $id = $_[1];
     
    	my $fich_fsa = 'P:/Theorie/YANN/Fadoua/mutation_seq/ref_ali/'.$id.'.fsa';
    	my $fich_msf = 'P:/Theorie/YANN/Fadoua/mutation_seq/ref_ali/'.$id.'.msf';
     
     
    	my @params = (	
     
    		'gapopen' => 15,
    		'PAIRGAP' => 0,
    		'ktuple' => 4, 
    		'type' => 'dna', 
    		'outfile' => $fich_msf, 
    		'format' => 'Fasta',
    		'outorder' => 'aligned',
    	);
     
    	# and pass the factory a reference to that array
    	my $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params);
    	$factory->executable("C:/ClustalW2/clustalw2.exe");
     
     
    	my $aln = $factory->align($seq_array_ref);
     
    	# création du fichier fasta
    	my $in_msf  = Bio::AlignIO->new(-file => $fich_msf , -format => 'msf');
    	my $out_fsa = Bio::AlignIO->new(-file => ">".$fich_fsa , -format => 'fasta');
     
    	while ( $aln = $in_msf->next_aln() ) {
    	    $out_fsa->write_aln($aln);
    	}
     
    	close ($fich_fsa);
    	close ($fich_msf);
     
     
    	unlink $fich_msf or print $out_file_log "Could not delete the file: $id\t$!\n";
    les close() sont inutiles car je crois que le module Bio::AlignIO ferme les fichiers. Je les ai supprimés mais ça ne change rien à l'erreur.

  10. #10
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    OK, cela vient donc probablement des droits par défaut que ton système d'exploitation attribue à la création d'un nouveau fichier.
    Ces droits sont modifiables sous Linux avec la commande umask. Cette commande est également disponible en perl, sous le même nom (voir la doc).

  11. #11
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Merci, je vais y regarder. Je suis sous windows et en tant qu'administrateur, ne peut-on pas changer ce droit par défaut?

    umask() sous perl s'utilise à l'ouverture du fichier? Comment faire dans mon cas où le module ouvrant le fichier est Bio::Tools::Run::Alignment::Clustalw

Discussions similaires

  1. [VB.NET] Comment supprimer un fichier qui est utilisé ?
    Par Toon94 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/06/2010, 12h59
  2. [cvs] supprimer un fichier
    Par ed_hunter dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 27/03/2007, 18h17
  3. Supprimer plusieurs fichiers...
    Par Thierry8 dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2005, 11h43
  4. Comment supprimer des fichiers en nombre ?
    Par Didier L dans le forum API, COM et SDKs
    Réponses: 13
    Dernier message: 25/01/2005, 16h01
  5. Supprimer un fichier par rapport a une date
    Par NewB dans le forum Linux
    Réponses: 2
    Dernier message: 25/06/2003, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo