問題

これを見つけることができる人には、以下の私の答えを参照してください。

私は2つのスクリプトa.pyとb.pyを持っています。 私の現在のディレクトリ "C:\ Users \ MyName \ Desktop \ MAIN"では、> python a.pyを実行します。

最初のスクリプトa.pyは現在のディレクトリで実行され、たくさんのファイルに何かを行い、同時にその新しいディレクトリに移動されるファイルの編集されたバージョンを持つ新しいディレクトリ(testA)を作成します。次に、testAのファイルに対してb.pyを実行する必要があります。

初心者として、b.pyスクリプトをtestAにコピーして貼り付け、これらの新しいファイルでいくつかのコマンドを実行し、それらの編集されたファイルで別のフォルダ(testB)を作成する "> python b.py"コマンドを再度実行します。

私はa.pyが終了するのを待って、その新しいディレクトリに移動し、b.pyを貼り付けてからb.pyを実行するのが面倒です。私はディレクトリの階層を維持しながら、これらのスクリプトを実行するbashスクリプトを作成しようとしています。

 #!/usr/bin/env bash
 python a.py && python b.py
 

スクリプトa.pyはスムーズに実行されますが、b.pyはまったく実行されません。 b.pyが失敗するとエラーメッセージは表示されません。a.pyが完了すると、b.pyがそのNEWディレクトリに存在しないため、実行できないと思います。 新しいディレクトリに移動するb.py内に追加できる小さなスクリプトはありますか?私は実際にb.pyディレクトリパスも変更しようとしましたが、うまくいきませんでした。

たとえば、b.py:

 mydir = os.getcwd() # would be the same path as a.py
mydir_new = os.chdir(mydir+"\testA")
 

b.py内のすべてのインスタンスでmydirsをmydir_newに変更しましたが、それも違いはありませんでした...スクリプトをbash内の新しいディレクトリに移動する方法もわかりません。

フォルダの小さなフローチャートとして:

 MAIN # main folder with unedited files and both a.py and b.py scripts
|
| (execute a.py)
|
--------testA # first folder created with first edits of files
         |
         | (execute b.py)
         |
         --------------testB # final folder created with final edits of files
 

TLDR:b.pyが作成されてtestAに格納されているファイルに依存している場合、メインのテストフォルダ(bashスクリプトスタイル?)からa.pyとb.pyを実行するにはどうすればよいですか。通常、b.pyをtestAにコピーして貼り付け、b.pyを実行しますが、今は200以上のファイルがあり、コピーして貼り付けるのは時間の無駄です。

  ベストアンサー

最も簡単な答えは、おそらく作業ディレクトリを変更し、2番目の.pyファイルを次の場所から呼び出すことです。

 python a.py && cd testA && python ../b.py
 

もちろん、あなたのためにすべてを行うスクリプトを書く方がもっと簡単かもしれません。

a.pyと同じディレクトリにrunTests.shとして保存します。

 #!/bin/sh
python a.py
cd testA
python ../b.py
 

実行可能にする:

 chmod +x ./runTests.sh
 

次に、ディレクトリを入力して実行するだけです。

 ./runTests.sh
 

  同じタグがついた質問を見る

pythonbashpython-2.7