【问题标题】:Python script can't create folder on HerokuPython脚本无法在Heroku上创建文件夹
【发布时间】:2021-12-22 06:31:03
【问题描述】:

在本地调试服务器上运行脚本很好。

 if not os.path:
    os.mkdir(os.path.normpath(f'media/{request.user.id}/'))
 file_path = os.path.normpath(f'media/{request.user.id}/' + file_name + '.csv')

在 Heroku 上出现错误。如果我不创建目录“media”并且不将其部署到 Heroku,我会收到错误“media/1/”不存在。 怎么回事,为什么脚本不能创建目录?

【问题讨论】:

    标签: python heroku


    【解决方案1】:

    直接的问题是您的if 条件与os.path 模块本身相悖:

    if not os.path:
    

    os.path is part of the standard library 所以if os.path 应该始终为True,只要osos.path 已被导入。如果它确实返回了False(例如,如果你有一个损坏或精简的 Python 环境),你将无法在 if 块中使用它。

    我怀疑你想要更多类似的东西,使用os.path.exists()

    user_media_folder = os.path.normpath(f'media/{request.user.id}/')
    
    if not os.path.exists(user_media_folder):
        #         ^^^^^^^^^^^^^^^^^^^^^^^^^^
        os.mkdir(user_media_folder)
    
    file_path = os.path.normpath(user_media_folder + file_name + '.csv')
    

    无论如何,假设您不希望这些文件消失,您将无法使用本地文件系统。 It is ephemeral:您对它所做的任何更改都会在您的测功机重新启动时丢失。这种情况经常发生(至少每天一次),而且出乎意料。

    您必须将上传的内容存储在其他地方,例如on Amazon S3 或 Azure Blob 存储。例如,请参阅Django + Heroku + S3

    【讨论】:

      猜你喜欢
      • 2014-11-12
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多