2017-07-13 28 views
0

私はPythonスクリプトを実行することができますが、実際にはPythonスクリプトでファイルを保存することに問題があります。ターミナルから直接Pythonスクリプトを実行すると、ノードプロセスを起動するときにファイルが黙って失敗するように見えます(ファイルは保存されないため、ノードスクリプトは失敗します)。 Pythonスクリプトを直接実行すると権限や場所の問題になるのでしょうか?ノードからPythonスクリプトを実行してファイルを保存する

私はpython-shellを使用して処理を容易にしています。私はos.getcwd()とpythonでスクリプトの場所を確認し、ファイルの保存とノードの間に十分な時間があることを確認するsleepコマンドを実行しようとしてい

router.get('/patientsExport', (req, res) => { 
    const options = { 
     mode: 'text', 
     scriptPath: __dirname, 
    }; 
    PythonShell.run('patientsExport.py', options, err => { 
     if (err) { 
      logger.error(err); 
      throw err; 
     } 
     const filePath = path.join(__dirname, 'patientsExport.xlsx'); 
     fs.exists(filePath, exists => { 
      if (exists) { 
       // Deliver the file 
      } else { 
       res.writeHead(400, { 'Content-Type': 'text/plain' }); 
       res.end('ERROR File does NOT Exists'); 
      } 
     }); 
    }); 
}); 

:私の現在のAPIエンドポイントは、このようなものですそれを見つけるが、役に立たない。

wb.save(filename=dest_filename) 
while not exists(dest_filename): 
    sleep(1) 

誰でもこれについての経験があるか、間違っていることを知っていますか?

答えて

0

ロケーションの問題でした。ファイルはNodeJSスクリプトのルートに保存されていました。

Javascriptを::

const options = { 
     mode: 'text', 
     scriptPath: __dirname, 
     args: [__dirname], 
    }; 
    PythonShell.run('patientsExport.py', options, err => ... 

のPython:

import sys 
from os import chdir 

chdir(sys.argv[1]) if sys.argv[1] else sys.exit() 
私はPythonスクリプトにノードから __dirnameを渡すなどのような、現在の作業ディレクトリを変更することで問題を回避するために管理しました
関連する問題