1
我試圖通過Django應用程序將CSV文件上傳到Google App Engine中的Blobstore文件。我遇到了一個問題,因爲上傳的文件可能以錯誤的換行符結束。所以,我需要在python的通用換行符模式下打開上傳的文件。 Django文檔建議我可以在File對象上使用.open(),設置一個新模式。如何將通過Django上傳的CSV文件存儲到Google App Engine上的blobstore?
這是我提出的解決方案:
filename = files.blobstore.create(mime_type='text/csv')
csvfile = request.FILES.get('csvfile')
with files.open(filename, 'a') as output_file:
with csvfile.open(mode='rU') as input_file:
output_file.write(input_file.readline())
(「文件」是App Engine的API的一部分)
這項權利似乎給我,但我想知道如果任何人受到了類似的情況和更好的解決方案?
FWIW,上面的代碼是給我上__exit__爲csvfile上下文管理的一個例外。也許我需要手動打開並關閉它?從[文檔](https://docs.djangoproject.com/en/1.4/ref/files/file/)可能甚至想要做什麼是不完全清楚的。 – foresmac
這裏是例外,這對我來說建議Django的files.File類不實現上下文管理器協議,也許?儘管它是Python文件對象的包裝器? '用csvfile.open(mode ='rU')作爲input_file: AttributeError:__exit__' – foresmac