2016-12-11 16 views
1

私はpythonの世界にちょっと新しく、私のpythonスクリプト(linuxを使って)から自動的に出るbashファイルを実行しているいくつかの問題があります。絶対パスを示すPythonから.shファイルを実行

私はどこかでこのように私のデスクトップにあるディレクトリ内のテキストファイル.geoとBashファイル.SHの両方を作成するために、私のPythonスクリプトを設定します。

basedirectory="/home/pst2/Desktop/"; 
    *//Writing the .geo file* 
    file = open(basedirectory+nomdossier+"/"+nomfichier+".geo", 'w'); 
    file.write 
     ..blabla 
     ..blabla 
    file.close(); 
    //Writing the .sh file 
    file = open(basedirectory+nomdossier+"/"+nomfichier+".sh", 'w'); 
    file.write 
     ..blabla 
     ..blabla 
    file.close(); 

今、この時点で私のスクリプトは、すべてを完璧に動作変数の設定や細かい作業と私は(Pythonスクリプトを実行すると、変数を入力した後exempleのために)このディレクトリに自分自身を見つける作成し、両方のそれらのファイル

 /home/pst2/Desktop/test/ 
    (and in here you will find the new test.geo and test.sh that were created via the python script) 

で「手動」実行基本的にtest.sh Bashのtest.sh(私が悲惨な時にはいつでもctory on ubuntu)は、同じディレクトリにtest.mshという別のファイルを作成します と私は、スクリプトから自動的に新しく作成されたtest.shファイルを実行するサブプロセスモジュールを使用して、正しいコーディングを見つけることができません。あなたに書いているわからないものを .SHファイル への絶対パスを示すと同じように、そうする方法がある(我々の場合basedirectory + nomdossier +「/」+ nomfichier +」には。SH)?

答えて

0

.SHファイル

しかし、で開始する:。?!

  1. あなたがhashbangとあなた.SH-ファイルを開始しました。#/ binに/ shの
  2. あなたは、実行可能ファイルとしてファイルをモッドあります。chmod +? x

あなたがこれを行った後、あなたがサブプロセスモジュールを使用して、サブプロセスのためのマニュアルからの例のような何かを行うことができるはず: subprocess.call([PATH_TO_SCRIPT +「/ script.sh」])

私があります&新しい情報が私の注目を集めるときこの答えを更新する必要があります

+0

を探して何をすることができ

os.system("command_line_with_args") 

を信じてはい、私.SHは実行可能であり、ここで唯一の問題は、私が Bashのテストを行っていることを、他のbashのファイルを実行する方法を知ってはいけないということです.sh 私はPythonスクリプトから自動的にそれを実行したいので、端末上に(bash test.sh)を書くと、自分の.shと同じディレクトリにあったときだけ動作します。私は新しく作成された.shファイルと新しく作成されたディレクトリファイルを実行する方法を見つけることができません;( –

+0

シェルのためかもしれません。システムのパスを提供しているので、どこにそれを見つけるか分かっています。適切な環境変数または完全/相対パスとして指定することができます。例:/ sbin/lsしかし、環境変数にsbinがあると、lsを書くこともできます。 –

0

osモジュールを見てください。

は、私はあなたが

+0

私の問題は、.shファイルの新しいパスを考慮して適切な行コードを書く方法を知らないことです。私は実行したい。 と私の問題の本当の難しさを理解するのはちょっと難しいですから、スクリプト作成の世界では初めてです( –

+0

@TAAMALLAHYoussef [link](https://www.cyberciti。私はあなたが探しているコマンドは 'code' bash script-name-here.sh 'code'だと思います。 –

関連する問題