2012-11-07 85 views
3

我无法分析上传到我的服务器的文件。理想情况下,用户会上传一个.csv文件,然后我会从文件中的数据运行一些数字积分(因此import numpy as np)并返回结果。为了在做任何分析之前测试cgi部分,我在下面创建了python脚本。我的问题是这个消息总是显示为空白,所以最后在浏览器中显示一个空白的html页面。阅读在Python中通过CGI上传的文件

很明显,我没有正确阅读文件(这意味着我无法分析它),但我不知道我在做什么错。我自己的搜索表明,我在下面应该有效。

#!/usr/bin/python 

#--------------------------------------------- 
#============================================= 
#--------------------------------------------- 
#imports 

#import csv 
#import time as tm 
#import numpy as np 
#import os 
import cgi, cgitb 

cgitb.enable() 

form = cgi.FieldStorage() 

#The variables 
#httpopen="" 
#httpclose="" 
message="meow" 

#get the fileitem 
fileitem=form['userfile'] 
if fileitem.file: 
    #yay...we got a file 
    message=fileitem.file.readline() 


print """\ 
Content-Type: text/html\n 
<html><body> 
<p>%s</p> 
</body></html> 
""" % (message,) 

这里是HTML表单,让上传:

<html> 
<body> 
    <form enctype="multipart/form-data" 
        action="capacity_rewrite.py" method="post"> 
    <p>File: <input type="file" name="userfile" /></p> 
    <p><input type="submit" value="Upload" /></p> 
    </form> 
</body> 
</html> 

感谢,

回答

2

你只是读从上传的文件一行。也许第一行是空行?相反,尝试fileitem.file.read(),它会将整个文件读入一个字符串。不要为大文件做这件事,因为你可能会耗尽内存,但它应该有助于理解你的测试。

+0

就是这样。我觉得自己像个白痴。该文件不应该有一个空行,所以我只是假定它是我所期望的格式。谢谢。 – nkk