无法打开在Django中创建的文件对象

时间:2013-05-21 17:10:33

标签: python django apache beautifulsoup

我正在开发一个使用Django框架在Apache服务器上运行的应用程序。我当前的脚本在本地桌面(没有Django)上运行时工作正常。该脚本将所有图像从网站下载到桌面上的文件夹。但是,当我在服务器上运行脚本时,文件对象只是由Django创建的,显然有一些东西(应该是谷歌的徽标),但是,我无法打开文件。我还创建了一个html文件,更新了图像链接位置,但html文件被创建得很好,我假设因为它是所有文本,也许?我相信我可能不得不在某个地方使用文件包装器,但我不确定。感谢任何帮助,下面是我的代码,谢谢!

from django.http import HttpResponse
from bs4 import BeautifulSoup as bsoup
import urlparse
from urllib2 import urlopen
from urllib import urlretrieve
import os
import sys
import zipfile
from django.core.servers.basehttp import FileWrapper

def getdata(request):
out = 'C:\Users\user\Desktop\images'
if request.GET.get('q'):
    #url = str(request.GET['q'])
    url = "http://google.com"
    soup = bsoup(urlopen(url))
    parsedURL = list(urlparse.urlparse(url))

    for image in soup.findAll("img"):
        print "Old Image Path: %(src)s" % image
    #Get file name
    filename = image["src"].split("/")[-1]
    #Get full path name if url has to be parsed
    parsedURL[2] = image["src"]
    image["src"] = '%s\%s' % (out,filename)
    print 'New Path: %s' % image["src"]
    #       print image
    outpath = os.path.join(out, filename)

    #retrieve images
    if image["src"].lower().startswith("http"):
        urlretrieve(image["src"], outpath)
    else:
        urlretrieve(urlparse.urlunparse(parsedURL), out) #Constructs URL            from tuple (parsedURL)

    #Create HTML File and writes to it to check output (stored in same directory).
    html = soup.prettify("utf-8")
    with open("output.html", "wb") as file:
        file.write(html)


else:
    url = 'You submitted nothing!'

return HttpResponse(url)

1 个答案:

答案 0 :(得分:0)

我的问题与将文件存储在桌面上有关。我将文件存储在DJango工作区文件夹中,更改了路径,它对我有用。