Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Heroku检索文件_Python_Heroku_Flask - Fatal编程技术网

Python 从Heroku检索文件

Python 从Heroku检索文件,python,heroku,flask,Python,Heroku,Flask,我知道有人问过,但我有一个Python脚本,可以在Heroku中生成一个文件。我在Cedar stack上,它显然现在允许您在/app中的任何位置进行编写,而不仅仅是/tmp 基本上,我运行一个脚本,我感兴趣的文件被放到/app,如果我没有弄错的话,它是我的Heroku应用程序使用的某种临时目录。我将使用/app/test.txt作为由我的脚本生成的文件的一个示例,我对创建链接感兴趣 有趣的是,当我在Python脚本中执行ls时(通过os.subprocess或类似的方式),我会得到/app中所

我知道有人问过,但我有一个Python脚本,可以在Heroku中生成一个文件。我在Cedar stack上,它显然现在允许您在
/app
中的任何位置进行编写,而不仅仅是
/tmp

基本上,我运行一个脚本,我感兴趣的文件被放到
/app
,如果我没有弄错的话,它是我的Heroku应用程序使用的某种临时目录。我将使用
/app/test.txt
作为由我的脚本生成的文件的一个示例,我对创建链接感兴趣

有趣的是,当我在Python脚本中执行
ls
时(通过os.subprocess或类似的方式),我会得到
/app
中所有内容的目录列表,包括
requirements.txt、Procfile、/templates/
等等,包括我感兴趣的
test.txt
文件

因此,我的Python脚本如下所示:

@app.route('/', methods=['POST'])
def my_form_post():
    return render_template("my_form_2.html", filename = "test.txt")
<!DOCTYPE html>
    <html lang="en">
    <body>
        <a href={{filename}}>Right-click to download!</a>
    </body>
</html>
相应的模板my_form_2.html如下所示:

@app.route('/', methods=['POST'])
def my_form_post():
    return render_template("my_form_2.html", filename = "test.txt")
<!DOCTYPE html>
    <html lang="en">
    <body>
        <a href={{filename}}>Right-click to download!</a>
    </body>
</html>

上面的
html href
的关键是我希望它指向一个URL,比如
my app.herokuapp.com/app/test.txt
。上面的HTML生成前面的链接,不幸的是该链接无效。从本质上讲,我试图获得使用Python脚本创建的文件的绝对路径。关于如何做到这一点有什么想法吗


在任何人提到S3之前,我现在尽量避免使用它,因为它是一个小文件,不需要传输到其他服务器。

我认为这不是一个好主意。一点也不。比如:
send\u file(os.path.join)(os.path.abspath(os.path.dirname(\uu file\uu),filename)
也许吧。谢谢大家。我最终使用了亚马逊的S3。