Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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 如何将输出文件从Django保存到AmazonS3_Python_Django_Heroku_Amazon S3 - Fatal编程技术网

Python 如何将输出文件从Django保存到AmazonS3

Python 如何将输出文件从Django保存到AmazonS3,python,django,heroku,amazon-s3,Python,Django,Heroku,Amazon S3,作为过程的一部分,我的网站从熊猫数据框中装箱一个csv文件- df.to_csv() 由于应用程序部署在Heroku上,这里没有持久文件存储,因此我想将其保存到AmazonS3。我已经为上传文件和静态文件设置了这个,但无法让它为这个工作。非常感谢您的帮助 也许您可以使用将文件保存到Amazon S3。将AWS凭据添加到配置中,如下所示: heroku config:add AWS_ACCESS_KEY_ID='your_key_here' heroku config:add AWS_SECRET

作为过程的一部分,我的网站从熊猫数据框中装箱一个csv文件-

df.to_csv()

由于应用程序部署在Heroku上,这里没有持久文件存储,因此我想将其保存到AmazonS3。我已经为上传文件和静态文件设置了这个,但无法让它为这个工作。非常感谢您的帮助

也许您可以使用将文件保存到Amazon S3。将AWS凭据添加到配置中,如下所示:

heroku config:add AWS_ACCESS_KEY_ID='your_key_here'
heroku config:add AWS_SECRET_ACCESS_KEY='your_secret_here'
heroku config:add AWS_STORAGE_BUCKET_NAME='your_bucket_name_here'
AWS_ACCESS_KEY = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
from django.core.files.base import ContentFile
from StringIO import StringIO

output = StringIO()
df.to_csv(output)
mymodel.myfield.save('django_test.csv', ContentFile(output.getvalue()))
然后在settings.py中检索它们,如下所示:

heroku config:add AWS_ACCESS_KEY_ID='your_key_here'
heroku config:add AWS_SECRET_ACCESS_KEY='your_secret_here'
heroku config:add AWS_STORAGE_BUCKET_NAME='your_bucket_name_here'
AWS_ACCESS_KEY = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
from django.core.files.base import ContentFile
from StringIO import StringIO

output = StringIO()
df.to_csv(output)
mymodel.myfield.save('django_test.csv', ContentFile(output.getvalue()))
更新:您可以尝试执行以下操作:

heroku config:add AWS_ACCESS_KEY_ID='your_key_here'
heroku config:add AWS_SECRET_ACCESS_KEY='your_secret_here'
heroku config:add AWS_STORAGE_BUCKET_NAME='your_bucket_name_here'
AWS_ACCESS_KEY = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')
from django.core.files.base import ContentFile
from StringIO import StringIO

output = StringIO()
df.to_csv(output)
mymodel.myfield.save('django_test.csv', ContentFile(output.getvalue()))

看看博托。代码非常简单,您不必担心写文件,直接发布即可

heroku config:add AWS_ACCESS_KEY_ID='your_key_here'
heroku config:add AWS_SECRET_ACCESS_KEY='your_secret_here'
Boto将自动使用配置:

import boto
filecontents = "colm1, colm2, etc"
c = boto.connect_s3()
b = c.get_bucket('mybucket') # substitute your bucket name here
from boto.s3.key import Key
k = Key(b)
k.key = filecontents
k.get_contents_as_string()
'colm1, colm2, etc'

阅读更多信息:

我正在使用django存储来存储静态和上传的媒体文件,这很好。如何使用它保存在程序运行过程中创建的文件?df.to_csv(s3_storage.open(…))不起作用…我认为您需要类似于
的东西,将open(csv_文件名,'rb')作为f:mymodel.myfield.save('django_test.csv',File(f),save=True)