在Python中将一个可能很大的文本文件上传到普通WSGI服务器

1 投票
3 回答
1579 浏览
提问于 2025-04-15 12:47

我需要把一个可能非常大的纯文本文件上传到一个很简单的wsgi应用上,但又不想让服务器的内存被占满。我该怎么做呢?我想使用标准的Python模块,尽量不使用第三方模块。

3 个回答

0

Python会处理gzip和zip文件,你可以查看这份文档。我建议你在自己的电脑上先把文件压缩一下(可以使用像7-zip这样的压缩软件),然后再上传到服务器上。

更好的方法是:写一个脚本,让它自动压缩文件并上传。这是可以通过Python的标准库来实现的。

2

如果你使用cgi模块来处理输入(大多数框架都是这样做的,比如Pylons、WebOb、CherryPy),那么它会自动把上传的文件保存到一个临时文件里,而不是直接把它加载到内存中。

3

wsgi.input 应该是一个像文件一样的流对象。你可以从中分块读取数据,然后直接把这些块写入磁盘。这样做不会占用太多内存。

或者我可能误解了问题?

撰写回答