2016-06-29 2 views
0

Каждые 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 (питон основе), но я бегу 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 

Я все еще хочу, чтобы они были защищены от записи, но также хотели бы иметь возможность обновлять их по мере необходимости.

Есть ли что-то, что я могу добавить в свою команду оболочки для записи поверх файлов, защищенных от записи?

+1

Do вы понимаете, что означает защита от записи? – 123

+0

Да. Я знаю, что это не самая лучшая настройка. Любые предложения о том, как это сделать? – VickiT05

+0

Просто удалите защиту от записи и верните ее позже. – Jdamian

ответ

1

взглянуть на зева стандартной библиотеки пакета:

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

Это позволяет CHMOD со следующей оговоркой:

Хотя Windows поддерживает CHMOD(), вы можете задавать только файл с постоянным содержимым (через константы stat.S_IWRITE и stat.S_IREAD или соответствующее целочисленное значение). Все остальные биты игнорируются.

@ VickiT05, я думал, что вы хотите его на питоне. Попробуйте это:

Проверить исходное разрешение файла с

ls -l [your file name] 

stat -c %a [your file name] 

Измените защиты, чтобы с

chmod 777 [your file name] 

изменения обратно в исходный режим файла или режим, что вы хотите

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

Спасибо. Есть ли эквивалентная команда для команды linux shell? – VickiT05

+0

@ VickiT05, я добавил команды bash выше. Дайте им идти. – ivan7707

+0

Спасибо @ ivan7707 Я изначально просил python, вы правы. Но после изменения нескольких вещей я оказался в скрипте bash. – VickiT05

Смежные вопросы