2011-07-01 8 views
2

私はポストドックで、ちょっとした科学的アプリケーションをPythonで完成させて、それを世界と共有したいと思っています。これは、遺伝学者にとっては本当に便利なツールです。CGI(Ubuntu)で一時ファイルを保存する

私は本当に人々にCGIフォームインターフェイスを通してこのプログラムを実行させたいと思います。私はもはや学生ではないので、私はもはやウェブスペースを持っていません。ちょっとした小さなcgi-binサブディレクトリが完璧につながっています。

私は数年前に単純なCGI Pythonプログラムを書いており、これをテンプレートとして使用しようとしていました。

ここに私の質問です: 私のプログラムは、一時ファイルを作成する必要があります(コマンドラインから実行すると、画像は指定されたパスに保存されます)。 私はApacheなどでいくつかのチュートリアルを読んでいましたが、実行中の事柄はたくさんありましたが、私のプログラムに一時ファイルを書き込ませる方法がわかりません(これらのファイルがどこにあるかなどはわかりません)。 )。私がPythonプログラムでファイルに書き込もうとすると、CGIは "クラッシュ"し、OKとは思われません。

テンポラリファイルはプログラムの出力(ユーザの入力ではない)にすぎないので、私はセキュリティについて非常に心配していません。

私は(あなたがこれまでこれを持っていて飽きていないとCGI忍者であると仮定していますが)私はCGIプログラムが一時的にファイル引数を取ることができると知っていますかファイル?これに

私の以前のアプローチは、単に引数としてテキストのリストを取ることだった。

try: 
    if item.file: 
     data = item.file.read() 
     if check: 
      Tools_file.main(["ExeName", "-d", "-w " + data]) 
     else: 
      Tools_file.main(["ExeName", "-s", "-d", "-w " + data]) 
... 

私はこの正しい方法をしたいと思います!あらかじめ乾杯。 overflowinglyあなた

スタックは、
オリバー

答えて

3

まあ、「正しい」方法は、ジャンゴのような既存のWebフレームワークを使用して再作業の事におそらくあります。この場合、おそらく過剰です。ここでのセキュリティ面を過小評価しないでください。彼らはおそらくあなたが考えるよりも関連性が高いでしょう。

あなたはおそらく、標準ライブラリからPythonの一時ファイルのモジュールを使用したいと述べたことすべて、:あなたがUnixを使っている場合

http://docs.python.org/library/tempfile.html

は、一般的には、何を/ tmp /に外のものを書きます。あなたのプログラムがapacheの下で実行されている場合にのみクラッシュしている(ただし、直接実行するとうまく動作する)場合は、アクセス権を確認してください。あなたの一時ファイルを保存することを決めたところに、あなたのapacheユーザに書き込み権限があることを確認してください。一時ファイルが適切なアクセス許可で書き込まれていることを確認します(後で読むことができないファイルを書きたくない)。ポール・マクミランが言ったように

1

、一時ファイルを使用します。

temp, temp_filename = tempfile.mkstemp(text = True) 
temp_output = os.fdopen(temp, 'w') 
temp_output.write(something_or_other) 
temp_output.close() 

私の個人的な意見では、あなたが本当に構築済みの機能を必要としない限り、フレームワークは大きな時間のシンクであるということです。 CGIははるかに簡単で、おそらくあなたのアプリケーションのためには、少なくともそれが本当に普及するまで働くことができます。

関連する問題