Masalah untuk menjalankan skrip bash dari dalam kode python3

Saya bekerja dengan sistem linux.

Saya memiliki banyak folder berbeda, setiap folder memiliki file bash (file bash sama di setiap folder). File bash ini menjalankan perintah sederhana seperti memuat lingkungan, membuat file dan folder, menjalankan aplikasi biner (misalnya kode1)

Dari folder ini ada file python yang ingin saya jalankan baseFolder/myPython.py " folder1/myBash " folder2/myBash . . . " folderN/myBash

MASALAH: ketika saya menjalankan skrip python (misalnya kode2) file bash tidak dijalankan di dalam folder, itu dijalankan karena file bash terletak di baseFoldes, sehingga membuat folder, file, dll. Saya tidak mengerti alasannya.

Saya menggunakan paket os dan subproses:

os.system('shell command')

subprocess.run('shell command')

subprocess.call('shell command')

kode1

#!/bin/bash
mkdir myNewFolder

touch myNewFile 

kode2

#!/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 sumber


Jawaban (1)


Bash sedang dijalankan di folder tempat Anda memulai skrip python. Anda perlu mengubah jalur menggunakan os.chdir() sebelumnya. Atau lebih baik: berikan direktori target sebagai parameter ke skrip shell dan tambahkan path ke nama file Anda.

person Cornholio    schedule 01.02.2019