2015-08-17 3 views
0

У меня есть набор кодов, которые я хочу запустить последовательно через .py-файл вместо файла .bat, как я могу это сделать? У меня есть следующий код для этого:Запуск пакетных файлов в python

#!/usr/bin/python 
    import sys 
    import os 
    bashCommand = "./available_itemsawk.sh" 
    os.system(bashCommand) 
    python_command="python run_process.py" 
    os.system(python_command) 

У меня есть два вопроса: 1) У меня есть сценарий оболочки (available_itemsawk.sh) следующим образом:

#!/bin/bash 
    join -1 4 -2 1 -o 1.1,1.2,1.3,1.4,1.5,1.6,2.2 <(sort -k4 abc.txt) <(sort -k1 cdf.txt) > join.txt 
    awk '{print $1"\t"$2"\t"$3"\t"$4"\t"$5"\t"$6}' join.txt > temp 
    mv temp join.txt 

Однако, когда я называю и беги это через скрипт Python, я получаю следующие ошибки:

sort: write failed: standard output: Broken pipe 
    sort: write error 

2) Как запускать скрипты в серии через процесс os.system?

 abc.txt 
     chr7 99999667 100000138 ENSG00000078487:I17.1  - 
     chr7 100000139 100000199 ENSG00000078487:E17.1 ENSE00001180416 - 
     chr9 100000046 100000367 ENSG00000203279:E2.1 ENSE00001678182 - 
     chr3 99998605 100000561 ENSG00000036054:I5.1  + 
     chr3 100000562 100000586 ENSG00000036054:E6.1 ENSE00001916783 + 
     chr3 100000586 100000691 ENSG00000036054:E6.2 ENSE00003639820|ENSE00001916783 + 
     chr9 99983518 100000704 ENSG00000159712:I1.1  - 
     chr9 100000368 100000704 ENSG00000203279:I1.1  - 
     chr9 100000731 100000765 ENSG00000254876:E1.1 ENSE00002183448 + 
     chr9 100000765 100000779 ENSG00000197816:E1.1 ENSE00003621967 + 


     cdf.txt 
     ENSG00000078487:I17.1 
     ENSG00000254876:E1.1 
     ENSG00000036054:E6.1 
     ENSG00000036054:I5.1 
     ENSG00000197816:E1.1 
+2

Похоже, ошибка в самом сценарии оболочки, независимо от питона. Можете ли вы подтвердить, что при непосредственном выполнении скрипта оболочки он работает? –

+0

@quantum_random: он работает нормально, а также я использую терминал mac в качестве платформы для запуска кодов. – AishwaryaKulkarni

+0

Можете ли вы привести образец содержимого в abc.txt и cdf.txt? Я могу попытаться воспроизвести это на моем конце. Я использую Ubuntu, но это не имеет значения. –

ответ

0

Поскольку я не могу комментировать (еще нет 50pts), вот мое лучшее предположение.

Это похоже на проблему с разрешениями. Любые индивидуальные разрешения для каждого скрипта (пакетный и python) или то, что вы определяете в заголовке ваших скриптов.

Ваш питон скрипт содержит #!/usr/bin/python в то время как ваш пакетный файл имеет #!/bin/bash

Это не может быть основой вашего вопроса. Но мне показалось, что, возможно, один из ваших .py-скриптов принадлежит или выполняется пользователем с более низкими разрешениями, чем требуется в вашем пакетном скрипте, или, возможно, в одном из ваших .txt-файлов.

Я бы удостоверился, что все ваши сценарии и файлы ввода/вывода не требуют повышенных разрешений. Вы используете их как пользователь или корень? Являются ли эти читаемые, записываемые, исполняемые пользователем или просто root?

Arch Linux file permissions wiki entry.

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