2016-08-04 8 views
0

別の問題に関連する私のprevious questionの後に、私はこの問題の枠組みになると考えました。呼び出されたサブプロセスがbashスクリプトを順番に実行しない

NOTEは:私はこのようなファイル構造を持っている

vowpal = subprocess.Popen('../../vowpal.sh',shell=True, stdout=subprocess.PIPE) 
vowpal.communicate() 
print vowpal.returncode 

:私のようなsubprocess.Popen()communicate()wait()のすべてのバージョンを、試してみました

├── src 
│ ├── main 
│ │ ├── costSensitiveClassifier.py 
└── vowpal.sh 
| 
├── data 
│ ├── output 
│ │ ├── cost 
| | |_______openCostClassifier.dat 
| | | 

そしてcostSensitiveClassifier.py

、I基本的に vowpal.shというスクリプトを実行しようとしています。このスクリプトは openCostClassifer.datで何らかの操作を行い、同じファイルにいくつかのファイルを出力しますフォルダをそのファイルとして保存します。

costSensitiveClassifier.py内のコードは次のとおりです。

import subprocess 
print "Starting cost sensitive predictions using batch script\n" 
subprocess.call("../../vowpal.sh") 
print "Ending predictions" 

そしてvowpal.sh内のコードは次のとおりです。

# !/bin/bash 
vw --csoaa 24 data/output/cost/openCostClassifier.dat -f data/output/cost/csoaa.model 
vw -t -i data/output/cost/csoaa.model data/output/cost/openCostClassifier.dat -p data/output/cost/csoaa.predict 

問題は、bashスクリプトの2行目がある必要があるということは常にあります最初に出力するcsoaa.model(bashスクリプトの1行目を参照してください)にして、一度終了すると、そのファイルを使用してcsoaa.predictを出力する2番目の行が実行されます。しかし、これはそうではないと私はbashスクリプトに関連した私のエラーコードで取得するのpythonファイルの実行時に私が取得:

vw (./io_buf.h:123): can't open: data/output/cost/csoaa.modelerrno = No such file or directory 

を私はそれは私が(私は適応すべき必要なものであるかどうかわからthis linkが見つかりましたがありませんbashスクリプトが完了して作業する必要があるファイルを作成する予定の時間になるようにスリープしますか?)。

+0

[snakemake](https://bitbucket.org/snakemake/snakemake/wiki/Home)や[ruffus](http://www.ruffus.org.uk)のようなワークフロー管理ライブラリが必要なようです。 /) –

+0

あなたのエラーはあなたのスクリプトが 'csoaa.modelerrno'ではなく' csoaa.model'を探していることを示唆しています。 –

答えて

1

これはvowpalの問題です。それはできないエラーファイルを作成しようとします。ディレクトリ "data/output/cost /"が存在しないという理由が考えられます。

それは私にとって同じエラーを引き起こしていたものです。

関連する問題