如何使用用户输入作为参数运行 .py 脚本

Posted

技术标签:

【中文标题】如何使用用户输入作为参数运行 .py 脚本【英文标题】:how to run .py script with user input as parameters 【发布时间】:2017-12-31 21:24:30 【问题描述】:

我有一个 .py 文件,比如“car.py”。它需要 3 个输入(颜色、品牌、年份)。它接受用户输入并读取文件,然后返回输入中给出的颜色、品牌和年份的所有匹配实例。该脚本运行良好。

现在,我想创建一个类似于搜索页面的网页。它要求 3 个输入,搜索文件(本地)并返回结果。

我是第一次使用 Django,我很难弄清楚如何调用 car.py 文件并让它在返回结果之前在后台运行。

我制作了一个 html 界面,但我知道我无法在其中引用 python 脚本。 Django中有类似的东西吗?我可以在哪里引用脚本,当按下按钮时,它会在给定用户输入的情况下运行该脚本?

我不希望得到完整的编码响应,我只是想要澄清或参考答案。我一直无法在网上找到类似的东西。

【问题讨论】:

您是否尝试在不重新加载/更改当前页面的情况下进行此搜索?在这种情况下,使用 javascript 或其他运行搜索的异步选项可能是正确的。如果您不介意加载新页面,您可以创建一个表单来提交到运行搜索并显示结果的路由/端点。 php 函数exec() 怎么样?你能在 PHP 中处理表单发布并从中执行一个 shell 命令,该命令以用户输入作为参数运行脚本吗? @Andrew Zick,页面可以重新加载。表单究竟如何提交到路由/端点?能不能稍微扩展一下? 【参考方案1】:

我会把我关于如何在 Django 中提交表单的回复移到这里而不是评论,因为现在它更像是一个答案。

当您提交表单时,通常会向其中包含表单值的网站发送 POST 请求。因此,当我说表单将提交到路由时,我的意思是 POST 请求将被发送到您的 Django 网站中的特定视图,该视图基本上可以是您的 car.py 文件,并进行了一些更改。这是一个表单的an example,它将接受您所需的三个输入,这是一个基本上可以是您的“car.py”的视图的an example,以及a template。

您的观点的粗略示例:

def search_view(request):
    if request.method == 'POST':
        form = SearchForm(request.POST)

        if form.is_valid():
            # process the data with your code from "car.py"
            # render your results page
            return render(request, 'results.html')
    # if a GET (or anything else) just render the same search page again
    else:
        form = SearchForm()
    return render(request, 'search.html', 'form': form)

SearchForm() 可以是用户想要的任何值。

【讨论】:

以上是关于如何使用用户输入作为参数运行 .py 脚本的主要内容,如果未能解决你的问题,请参考以下文章

处理用户输入(第十四章)

argv的理解

linux shell 脚本读取用户输入的参数如何解决?

如何根据命令行输入包含py文件?

如何使用CLI命令在输入文件参数上运行Python脚本来生成输出文件

将用户名和密码作为参数输入的 MySQL 脚本