2016-06-29 1 views
0

Tous les fichiers de 4 heures sont mis à jour avec de nouvelles informations si nécessaire - c'est-à-dire si de nouvelles informations ont été traitées pour ce fichier particulier (les fichiers correspondent à des personnes).Réécrire le fichier protégé en écriture

J'utilise cette commande pour convertir mes fichiers .stp (ceux qui sont mis à jour toutes les 4 heures) en fichiers .xml.

rule convert_waveform_stp: 
    input: '/data01/stpfiles/{file}.Stp' 
    output: '/data01/workspace/bm_data/xmlfiles/{file}.xml' 
    shell: 
     ''' 
     mono /data01/workspace/bm_software/convert.exe {input} -o {output} 
     ''' 

Mon script est Snakemake (basé python) mais je suis en cours d'exécution de la convert.exe par une commande shell.

Je reçois une erreur sur celles déjà traitées en utilisant convert.exe. Ils sont enregistrés par convert.exe comme protégés en écriture et il n'y a aucune option pour contourner cela dans l'exécutable lui-même.

Message d'erreur:

ProtectedOutputException in line 14 of /home/Snakefile: 
Write-protected output files for rule convert_waveform_stp: 
/data01/workspace/bm_data/xmlfiles/PID_1234567.xml 

je voudrais encore les aiment être protégé en écriture, mais voudrait aussi pouvoir les mettre à jour au besoin.

Y a-t-il quelque chose que je puisse ajouter à ma commande shell pour écrire sur les fichiers protégés en écriture?

+1

Do vous comprenez ce que signifie écrire des moyens protégés? – 123

+0

Oui. Je sais que ce n'est pas vraiment la meilleure configuration. Des suggestions sur comment faire à ce sujet? – VickiT05

+0

Retirez simplement la protection en écriture et remettez-la plus tard. – Jdamian

Répondre

1

un coup d'oeil à l'ensemble de la bibliothèque standard os:

https://docs.python.org/3.5/library/os.html?highlight=chmod#os.chmod

Il permet de chmod avec la mise en garde suivante:

Bien que Windows prend en charge chmod(), vous ne pouvez régler la l'indicateur en lecture seule du fichier avec lui (via les constantes stat.S_IWRITE et stat.S_IREAD ou une valeur entière correspondante). Tous les autres bits sont ignorés.

@ VickiT05, je pensais que vous le vouliez en python. Essayez ceci:

Vérifiez l'autorisation du fichier d'origine avec

ls -l [your file name] 

stat -c %a [your file name] 

Modifier la protection avec

chmod 777 [your file name] 

revenir au mode de fichier d'origine ou quel que soit le mode que vous voulez

chmod [original file protection mode] [your file name] 
+0

Merci. Y at-il une commande équivalente pour la commande shell Linux? – VickiT05

+0

@ VickiT05, j'ai ajouté les commandes bash ci-dessus. Donnez-leur un aller. – ivan7707

+0

Merci @ ivan7707 J'ai demandé à l'origine de python, vous avez raison. Mais après avoir changé quelques choses, j'ai fini par en avoir besoin dans bash script. – VickiT05