Проблема запустить скрипт bash из кода Python3 - PullRequest
0 голосов
/ 01 февраля 2019

Я работаю с системой Linux.

У меня много разных папок, в каждой папке есть файл bash (файл bash одинаков в каждой папке).Этот bash-файл выполняет простые команды, такие как загрузка среды, создание файлов и папок, запуск двоичных приложений (например, code1)

. Из этих папок есть файл python, в котором я хочу запустить baseFolder/myPython.py "folder1 / myBash" folder2 / myBash.,,"folderN / myBash

ПРОБЛЕМА: когда я запускаю скрипт python (например, code2), файл bash не выполняется внутри папки, он выполняется, поскольку файл bash был расположен в baseFoldes, следовательно, он создает папку, файлы и т. д. в BaseFolder. Я не понимаю, почему.

Я использовал ОС и пакеты подпроцессов:

os.system('shell command')

subprocess.run('shell command')

subprocess.call('shell command')

code1

#!/bin/bash
mkdir myNewFolder

touch myNewFile 

code2

#!/usr/bin/env python3

import os

import subprocess

... other code ...

subprocess.run(fullPathFolder+"/myBash") 

Или

subprocess.call(fullPathFolder+"/myBash") 

Или

os.system(fullPathFolder+"/myBash")

baseFolder/myPython.py

     "     myNewFolder <<<<<<<<<<?????

     "     myNewFile   <<<<<<<<<<?????

     "     folder1/myBash

     "     folder2/myBash

           .
           .
           .

      "     folderN/myBash

1 Ответ

0 голосов
/ 01 февраля 2019

bash - это , выполняемый в папке, в которой вы запустили скрипт Python. Вам необходимо изменить путь, используя os.chdir() ранее.Или лучше: передайте целевой каталог в качестве параметра сценариям оболочки и добавьте путь к именам файлов.

...