使用多个参数导入:烧瓶中的 运行 python 脚本
Import with multiple arguments: running python script in flask
我有一个 python 脚本 main.py 接受两个参数(2 个文本文件)
我正在使用 MAC OS X
Python2.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>
<html>
<head>
<title>T</title>
</head>
<body>
<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()
我现在希望 运行 我的脚本是 main.py 通过这个烧瓶应用程序本身,并且想知道这是怎么可能的。
我正在使用 import main 和另一个应用程序装饰器说 /exec 并手动将 URL 从 127.0.0.2000 更改为 127.0.0.2000/exec 但这给出了错误,因为 main 需要参数是通过。
抱歉,如果我在解释问题时不清楚,请告诉我是否可以更好地解释任何内容以帮助理解问题。
谢谢
您需要稍微修改此脚本。您应该像在 Flask 应用程序中一样将所有处理输入的代码放在 name == '__main__'
块中,其余代码放在您从该块调用的函数中:
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]
messages = sys.argv[2]
do_stuff(train, messages)
现在您的 Flask 应用可以调用 main.do_stuff(email, email1)
。
我有一个 python 脚本 main.py 接受两个参数(2 个文本文件)
我正在使用 MAC OS X Python2.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>
<html>
<head>
<title>T</title>
</head>
<body>
<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()
我现在希望 运行 我的脚本是 main.py 通过这个烧瓶应用程序本身,并且想知道这是怎么可能的。
我正在使用 import main 和另一个应用程序装饰器说 /exec 并手动将 URL 从 127.0.0.2000 更改为 127.0.0.2000/exec 但这给出了错误,因为 main 需要参数是通过。
抱歉,如果我在解释问题时不清楚,请告诉我是否可以更好地解释任何内容以帮助理解问题。
谢谢
您需要稍微修改此脚本。您应该像在 Flask 应用程序中一样将所有处理输入的代码放在 name == '__main__'
块中,其余代码放在您从该块调用的函数中:
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]
messages = sys.argv[2]
do_stuff(train, messages)
现在您的 Flask 应用可以调用 main.do_stuff(email, email1)
。