python-NameError全局名称';buf';没有定义

python-NameError全局名称';buf';没有定义,python,Python,我不知道这个错误是什么意思。非常感谢关于错误或代码其余部分的任何建议 import urllib import urllib2 import os import re from bs4 import BeautifulSoup def image_scrape(): url = raw_input("Type url for image scrape: ") content = urllib2.urlopen(url).read() soup = BeautifulSou

我不知道这个错误是什么意思。非常感谢关于错误或代码其余部分的任何建议

import urllib
import urllib2
import os
import re
from bs4 import BeautifulSoup
def image_scrape():
    url = raw_input("Type url for image scrape: ")
    content = urllib2.urlopen(url).read()
    soup = BeautifulSoup(content)
    name = 0
    for tag in soup.find_all(re.compile("img")):
        path = 'C:\Users\Sorcerer\Downloads'
        name += 1
        filename = name
        file_path = "%s%s" % (path, filename)
        downloaded_image = file(file_path, "wb")
        downloaded_image.write(buf)
        downloaded_image.close()

image_scrape()

您的代码中有一行:

downloaded_image.write(buf)
Python解释器以前在代码中没有看到这个变量
buf
。这就是错误

对代码其余部分的思考:

downloaded_image.write(buf)
  • 建议使用
    os
    模块来执行您正在使用该行执行的操作:

    file_path = "%s%s" % (path, filename)
    
    像这样:

    import os
    path = os.path.normpath('C:\\Users\\Sorcerer\\Downloads')
    file_path = os.path.join(path, name)
    
  • 看起来您正在尝试查找页面中的所有图像链接,并尝试将其保存到文件系统中
    file\u path
    引用的位置。假设指向图像的链接位于变量
    标记中,则执行以下操作:

    import requests
    r = requests.get(tag, stream=True)
    if r.status_code == 200:
        with open(name, 'wb') as f:
            for chunk in r.iter_content():
                f.write(chunk)
        f.close()
    

那么我如何定义buf?如果我不需要它,我应该放什么,因为.write()至少需要一个参数?ps谢谢你的帮助现在我也得到了这个错误:回溯(最近一次调用):文件“C:\Users\sorcer\programs\img\u scrape.py”,第20行,在image\u scrape()文件“C:\Users\sorcer\programs\img\u scrape.py”,第15行,在image\u scrape文件\u path=os.path.join(路径,文件名)文件“C:\Python27\lib\ntpath.py”,第73行,在join elif isabs(b):文件“C:\Python27\lib\ntpath.py”第57行,在isabs s=splitdrive中[1]文件“C:\Python27\lib\ntpath.py”第125行,在splitdrive中,如果p[1:2]==':':TypeError:“int”对象没有属性“getitem”@torchhound更新了答案。查看
normpath
用法