python解决最优化问题这个TypeError怎么解决?

老师,这是我自己弄的别的网站的代码#-*-coding:utf8-*-import requestsimport reimport sysreload(sys)sys.setdefaultencoding("utf-8")url='http://www.miaolianwang.com/lists/demand.html'html=requests.get(url)print html.contenttupian=re.findall('img src="(.*?)" width="1"',html,re.S)for i in tupian:
print i但是,运行时老是报错Traceback (most recent call last):& File "E:/学习pycharm/rexx/lx4.py", line 10, in &module&&&& tupian=re.findall('img src="(.*?)" width="1"',html,re.S)& File "C:Python27libre.py", line 181, in findall&&& return _compile(pattern, flags).findall(string)TypeError: expected string or buffer
你在findall里面的html应该为html.content
Python 单线程爬虫您还可以使用以下方式登录
当前位置:&>&&>&&>& > 如何解决Python出现错误TypeError:‘NoneType’object is not iterable的问题
如何解决Python出现错误TypeError:‘NoneType’object is not iterable的问题
Python 出现错误TypeError: &NoneType' object is not iterable解决办法TypeError: 'NoneType' object is not iterable 这个错误提示一般发生在将None赋给多个值时。&def myprocess():&&a == b&&&&if a != b:&&&&&&&&&&&& return True,&flag, val = myprocess()&在判断语句中,当if条件不满足,并且没有else语句时,函数默认返回None。在没有return语句时,Python也默认会返回None调用时,将None赋给多个值时,会出现提示:TypeError: 'NoneType' object is not iterable本例中,flag和val都被赋予了None(因为if条件不满足,所以默认返回None)就出现了这样的错误提示。所以函数返回值一定要考虑到条件分支的覆盖就爱阅读www.92to.com网友整理上传,为您提供最全的知识大全,期待您的分享,转载请注明出处。
欢迎转载:
相关推荐:python2.7 使用super关键词 报错 TypeError: must be type, not classobj 解决办法 - 为程序员服务
为程序员服务
python2.7 使用super关键词 报错 TypeError: must be type, not classobj 解决办法
今天遇到这个错误:
Traceback (most recent call last):
File &t2.py&, line 14, in &module&
print Derived().meth()
File &t2.py&, line 10, in meth
super(Derived,self).meth()
TypeError: must be type, not classobj
试验代码如下:
class Base():
def meth(self):
print &i'm base&
class Derived(Base):
def meth(self):
super(Derived,self).meth()
print &this is derived&
print Derived().meth()
google了下,发现原因是:
super只能用于python的新类中,如果基类是经典类,则会报这个错。
新类和经典类又是什么呢?
新类:所有类都必须要有继承的类,如果什么都不想继承,就继承到object类。
经典类:什么都不用继承的类,如上面的代码就是经典类。所以报错。
class Base(object):
def meth(self):
print &i'm base&
您可能的代码
相关聚客文章
荣誉:1350
相关专栏文章此篇文章整理新手编写代码常见的一些错误,有些错误是粗心的错误,但对于新手而已,会折腾很长时间才搞定,所以在此总结下我遇到的一些问题。希望帮助到刚入门的朋友们。后续会不断补充。
1.NameError变量名错误&
&&& print aTraceback (most recent call last):File "&stdin&", line 1, in &module&NameError: name 'a' is not defined
解决方案:
先要给a赋值。才能使用它。在实际编写代码过程中,报NameError错误时,查看该变量是否赋值,或者是否有大小写不一致错误,或者说不小心将变量名写错了。
注:在Python中,无需显示变量声明语句,变量在第一次被赋值时自动声明。
&&& a=1&&& print a1
2.IndentationError代码缩进错误
IndentationError: expected an indented block
缩进有误,python的缩进非常严格,行首多个空格,少个空格都会报错。这是新手常犯的一个错误,由于不熟悉python编码规则。像def,class,if,for,while等代码块都需要缩进。
缩进为四个空格宽度,需要说明一点,不同的文本编辑器中制表符(tab键)代表的空格宽度不一,如果代码需要跨平台或跨编辑器读写,建议不要使用制表符。
解决方案:
3.AttributeError对象属性错误&
&&& import sys
&&& sys.PathTraceback (most recent call last):
File "&stdin&", line 1, in &module&AttributeError: 'module' object has no attribute 'Path'
sys模块没有Path属性。
解决方案:
python对大小写敏感,Path和path代表不同的变量。将Path改为path即可。
&&& sys.path['', &'/usr/lib/python2.6/site-packages']
python知识拓展:
使用dir函数查看某个模块的属性
&&& dir(sys)['__displayhook__', '__doc__', '__egginsert', '__excepthook__', '__name__', '__package__', '__plen', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']
4.TypeError类型错误
4.1入参类型错误
t=('a','b','c')
for i in range(t):
print a[i]
TypeError: range() integer end argument expected, got tuple.
range()函数期望的入参是整型(integer),但却给的入参为元组(tuple)
解决方案:
将入参元组t改为元组个数整型len(t)
将range(t)改为range(len(t))
4.2入参个数错误
4.2.1关于元组作为入参
# coding=utf-8
Created on
@author: Jennifer
Project:显式等待
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import ctime
driver=webdriver.Firefox()
driver.get(r'http://www.baidu.com/')
loc=(By.ID,'kw')
print ctime()
element=WebDriverWait(driver,5,0.5).until(EC.visibility_of_element_located(*loc))
element.send_keys('selenium')
print ctime()
driver.quit()
Traceback&(most&recent&call&last):
&&File&"D:\system&files\workspace\selenium\autotestcombat\test_4_7_1_webdriverwait.py",&line&18,&in&&module&
&&&&element=WebDriverWait(driver,5,0.5).until(EC.visibility_of_element_located(*loc))
TypeError:&__init__()&takes&exactly&2&arguments&(3&given)
类的函数__init__()需要两个参数,但实际上给了三个。
EC.visibility_of_element_located类的入参应该是两个入参: self和元组。但却给了三个参数 self和*loc中的两个元素作为入参。
解决方案:
这里要将EC.visibility_of_element_located(*loc)改为EC.visibility_of_element_located(loc),入参为元组,而不是元组里边的两个值。
python知识拓展:
关于入参*的用法
以元组作为函数入参,如果元组前加*号,说明传递的入参为元组中的各个元素。如果元组前没有加*号,说明传递的入参为元组本身。
举例说明:
loc&=(By.NAME,'email')
element1=WebDriverWait(driver,5,0.5).until(EC.visibility_of_element_located(loc)) #只要一个参数(不考虑self情况下),元组loc,即:(By.NAME,'email')。 直接传loc。
element2=driver.find_element(*loc)#需要两个参数,元组loc的元素,即:By.NAME,'email'。直接传*loc
&&& import os
&&& os.listdir()Traceback (most recent call last):
File "&stdin&", line 1, in &module&TypeError: listdir() takes exactly 1 argument (0 given)
listdir()函数需要一个入参,但是只给了0个入参。
解决方案:
加一个入参
&&& os.listdir('/home/autotest')['hello.py', 'email126pro']
python知识拓展:
如何查看某个函数的使用,可以使用help查看。
&&& help(os.listdir)Help on built-in function listdir in module posix:
listdir(...)
listdir(path) -& list_of_strings
Return a list containing the names of the entries in the directory.
path: path of directory to list
说明:os.listdir()函数需要一个path路径入参,函数结果返回值是由字符串组成的列表。
4.3非函数却以函数来调用
&&& t=('a','b','c')&&& t()Traceback (most recent call last):
File "&stdin&", line 1, in &module&TypeError: 'tuple' object is not callable
t为元组,元组不能被调用,不能加()。初学者编写代码时,偶尔粗心会将变量当做方法来调用(不小心加了括号)。所以要认真检查下是否变量加了括号,或者方法漏加了括号。
解决方案:
将括号去除。
&&& t('a', 'b', 'c')
5.IOError输入输出错误
5.1文件不存在报错
&&& f=open("Hello.py")Traceback (most recent call last):
File "&stdin&", line 1, in &module&IOError: [Errno 2] No such file or directory: 'Hello.py'
open()函数没有指明mode,默认为只读方式,如果该目录下没有Hello.py的文件,则会报错,可查看是否拼写有错误,或者是否大小写错误,或者根本不存在这个文件。
解决方案:
该目录下有hello.py文件,打开该文件即可。
&&& f=open("hello.py")
python知识拓展:
如何查看python解释器当前路径:
&&& import os
&&& os.getcwd()
'/home/autotest'
查看python解释器当前路径下有哪些文件:
&&& os.listdir('/home/autotest')['hello.py', 'email126pro']
5.2因文件权限问题报错
&&& f=open("hello.py")
&&& f.write("test")Traceback (most recent call last):
File "&stdin&", line 1, in &module&IOError: File not open for writing
open("hello.py")如果入参没有加读写模式参数mode,说明默认打开文件的方式为只读方式,而此时又要写入字符,所以权限受限,才会报错。
解决方案:
&&& f=open("hello.py",'w+')
&&& f.write("test")
6.KeyError字典键值错误
常见报错有,测试一接口,接口返回数据一般是json格式,而测试该接口校验某个值是否正确,如果key拼写错了,就会报KeyError。简单举例如下:
&&& d={'a':1,'b':2,'c':3}&&& print d['a']1&&& print d['f']Traceback (most recent call last):
File "&stdin&", line 1, in &module&KeyError: 'f'
解决方案:
访问d中有的键值,如a,b或c。
阅读(...) 评论()没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 python中文乱码解决 的文章

 

随机推荐