Проблема с запуском сценария bash из кода python3

Работаю с системой линукс.

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

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

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

Я использовал пакеты os и subprocess:

os.system('shell command')

subprocess.run('shell command')

subprocess.call('shell command')

код1

#!/bin/bash
mkdir myNewFolder

touch myNewFile 

код2

#!/usr/bin/env python3

import os

import subprocess

... other code ...

subprocess.run(fullPathFolder+"/myBash") 

Or

subprocess.call(fullPathFolder+"/myBash") 

Or

os.system(fullPathFolder+"/myBash")

baseFolder/myPython.py

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

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

     "     folder1/myBash

     "     folder2/myBash

           .
           .
           .

      "     folderN/myBash

person robmachine    schedule 01.02.2019    source источник


Ответы (1)


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

person Cornholio    schedule 01.02.2019