带有多个参数的导入:在flask中运行python脚本

1 人关注

我有一个Python脚本main.py,它接收了两个参数(两个文本文件)。

我在使用MAC OS X Python 2.7

这很容易在终端机上运行。

python main.py train.txt sample.txt

我现在已经用Flask开发了一个小型的前端,其中有非常小的HTML,如下所示。

  #front.py FLASK
  from flask import Flask, render_template, request, redirect
  app = Flask(__name__)
  @app.route('/')
  def hello_world():
  return render_template('index.html')
  @app.route('/signup', methods = ['POST'])
   def signup():
    email = request.form['email']
    email1 = request.form['email1']
    # command below is just for testing, I wish to implement the same as this would if this would be typed in terminal.
    print("main.py " + email + " " + email1) 
   return redirect('/')
 if __name__ == "__main__":
  app.run()

和HTML

 <!DOCTYPE html>
       <title>T</title>
     </head>
       <form action="/signup" method="post">
       <input type="text" name="email"></input>
       <input type="text" name="email1"></input>
       <input type="submit" value="Signup"></input>
       </form>
    </body>
  </html>

这段HTML代码只是用一个表单来接收2个参数(我觉得这比JS容易,因为我没有这方面的经验)。

我刚刚写了

    print("main.py " + email + " " + email1)

上面的命令来测试,它暂时没有任何效用。

参数的使用。

  #main.py
  from filter import Filter
  import sys
  # Get arguments from user
  train = sys.argv[1]
  messages = sys.argv[2]
  # Open files for reading and writing
  train_file = open(train, "rb")
  messages_file = open(messages, "rb")
  predictions_file = open("predictions.txt", "w")
 # Create new filter and train it using the train-file
 f = Filter()
f.train(train_file)
 #filter the messages in messages_file, write results to predictions_file
 f.filter(messages_file, predictions_file)
# Close all the files
 train_file.close()
 messages_file.close()
 predictions_file.close()

我希望现在通过这个flask应用程序本身来运行我的脚本,也就是main.py,我想知道这怎么可能。

我在使用import main和另一个应用装饰器(如/exec),并手动将URL从127.0.0.2000改为127.0.0.2000/exec,但这导致了错误,因为main需要传递参数。

如果我对问题的解释不清楚,请让我知道,如果我可以用更好的方式解释,以帮助理解这个问题。

5 个评论
你为什么不显示main.py的代码?
我觉得这只会增加帖子的长度,它相当大,基本上是一个用于预测垃圾邮件的贝叶斯分类器。
但为什么你不能直接导入它并调用它定义的任何函数呢?
我试着导入了它,但它需要两个文本文件作为参数。我想让用户通过我的flask应用程序的前端输入这些文件名或上传文件,然后后端将调用主脚本main.py file1.txt file2.txt 到目前为止,我只能通过前端获得文件名,不知道如何在将这些名字作为参数传递时调用主脚本。
Which is why you should show the code .我不清楚你说的导入需要参数是什么意思。它从哪里得到它们?它是如何使用它们的?
python
html
flask
python-import
Ramit Sawhney
Ramit Sawhney
发布于 2017-02-07
1 个回答
Daniel Roseman
Daniel Roseman
发布于 2017-02-07
已采纳
0 人赞同

你需要对这个脚本稍作修改。你应该把所有处理输入的代码放在 name == '__main__' 块中,就像你在Flask应用中做的那样,其余的放在你从该块调用的函数中。

def do_stuff(train, messages):
    # Open files for reading and writing
    train_file = open(train, "rb")
    predictions_file.close()
if __name__ == '__main__':
    # Get arguments from user
    train = sys.argv[1]