重写写保护文件

时间:2016-06-29 13:04:21

标签: python linux bash snakemake

如果需要,每4小时文件会更新一次新信息 - 即,是否为该特定文件处理了任何新信息(文件对应于人)。

我正在运行此命令将我的.stp文件(每4小时更新一次)转换为.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}
        '''

我的脚本位于Snakemake(基于python),但我通过shell命令运行convert.exe

我在使用convert.exe处理过的内容时遇到错误。它们被convert.exe保存为写保护,并且没有选项可以绕过可执行文件本身。

错误讯息:

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

我仍然希望它们受到写保护,但也希望能够根据需要更新它们。

我可以添加到shell命令中来写一些写保护文件吗?

1 个答案:

答案 0 :(得分:1)

看一下os标准库包:

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

它允许chmod具有以下警告:

  

虽然Windows支持chmod(),但您只能使用它设置文件的只读标志(通过stat.S_IWRITEstat.S_IREAD常量或相应的整数值。所有其他位都被忽略。

@ VickiT05,我以为你想在python中使用它。试试这个:

使用

检查原始文件权限
ls -l [your file name]

stat -c %a [your file name]

将保护更改为

chmod 777 [your file name]

更改回原始文件模式或您想要的任何模式

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