Python学习---问题集
问题: win 系统下,python3+环境,写一个购物车程序,退出时打印商品价格,执行后报错信息如下
Traceback (most recent call last):
File "H:/Python培训/2017-09-14/Shopping Cart.py", line 6, in <module>
print("您选择的商品价格为:"+prices[buy+1])
TypeError: must be str, not int
答案:字符串不能跟整型合并,把需要合并的整型用str转换成字符串即可。
问题: win 系统下,python3+环境,在创建一个嵌套的字典时,执行后报错信息如下
"C:\Program Files\Python\Python36\python.exe" H:/Python培训/2017-09-18/level3.py
File "H:/Python培训/2017-09-18/level3.py", line 2
"福建省"{"福州"{"仓山区","晋安区","台江区"},
^
SyntaxError: invalid syntax
答案:键跟值之间必须要使用:隔开,加上:即可。
问题: win 系统下,python3+环境,在读取一个嵌套的字典时,执行后报错信息如下
Traceback (most recent call last):
File "H:/Python培训/2017-09-18/level3.py", line 14, in <module>
for i2 in level(choice1):
TypeError: 'dict' object is not callable
答案:字典取键的值时应该使用[]而不是(),()改成[]即可。
问题: win 系统下,python3+环境,在引用一个变量时,执行后报错信息如下
Traceback (most recent call last):
File "H:/Python培训/2017-09-19/shopping car.py", line 22, in <module>
print(seller_username)
NameError: name 'seller_username' is not defined
答案:引用了一个不存在的变量,引用前需要先定义变量。
问题: win 系统下,python3+环境,在调用一个列表的值时,执行后报错信息如下
Traceback (most recent call last):
File "H:/Python培训/2017-09-19/shopping car.py", line 26, in <module>
if user_password == user_password_list(user_list.index(user_name)):
TypeError: 'list' object is not callable
答案:取列表的值时应该使用[]而不是(),把()换成[]即可。
问题: win 系统下,python3+环境,在执行一个if..else语句时,执行后报错信息如下
"C:\Program Files\Python\Python36\python.exe" "H:/Python培训/2017-09-19/shopping car.py"
File "H:/Python培训/2017-09-19/shopping car.py", line 40
elif choice == "q":
^
IndentationError: expected an indented block
答案:if语句下面的代码块没写就运行,代码块没写时可使用pass语句
问题: win 系统下,python3+环境,choice接收input的输入,执行后报错信息如下
Traceback (most recent call last):
File "H:/Python培训/2017-09-19/shopping car.py", line 40, in <module>
if choice >=0 and choice<len(goods_list):
TypeError: '>=' not supported between instances of 'str' and 'int'
答案:数据类型错误,input输入的为字符串,字符串无法跟整型比较,使用int将字符串转换成整型即可。
问题: win 系统下,python3+环境,进行文件操作时,执行后报错信息如下
Traceback (most recent call last):
File "H:/Python培训/2017-09-19/shopping car.py", line 56, in <module>
ba.write(bala)
TypeError: write() argument must be str, not int
答案:write写入必须为字符串,不能为整型,使用str将整型转换为字符串即可。
问题: win 系统下,python3+环境,使用split函数时,执行后报错信息如下
File "H:/Python培训/1.第一模块/作业/模拟登陆/login.py", line 6
x = line1.strip().split(,)
^
SyntaxError: invalid syntax
答案:split中的参数为字符串类型,必须加引号。
问题: win 系统下,python3+环境,写一个程序进行文件操作,读取文件时,执行后报错信息如下
Traceback (most recent call last):
File "H:/Python培训/1.第一模块/作业/三级菜单/level3.py", line 2, in <module>
for line in f:
io.UnsupportedOperation: not readable
答案:打开文件时使用的是“a”追加模式,无法读取文件,将打开模式改为“r”即可。
问题: win 系统下,python3+环境,for循环一个字典时,执行后报错信息如下
File "H:/Python培训/1.第一模块/作业/三级菜单/level3.py", line 18
for y in level[choice]
^
SyntaxError: invalid syntax
答案:for循环语句末尾忘记加:,加上:即可。
问题: win 系统下,python3+环境,写一个程序对文件进行操作,返回文件大小时,执行后报错信息如下
Traceback (most recent call last):
File "H:/Python培训/1.第一模块/作业/购物车/shopping.py", line 22, in <module>
if os.path.getsize() == 0:
TypeError: getsize() missing 1 required positional argument: 'filename'
答案:os.path.getsize()的参数必须为具体的文件,指定具体的文件即可。
问题: win 系统下,python3+环境下,对使用列表下标读取列表中的值时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/2.第二模块/作业/员工信息系统/staff_info_test.py", line 93, in <module>
if update[-1].replace('"', "") == update_list[4]:
IndexError: list index out of range
答案:在取值时读取了错误的列表,下标超过了该列表的长度,读取正确的列表即可
问题: win 系统下,python3+环境下,使用isinstance()函数判断列表是否是可迭代对象时,执行后报错信息如下:
>>> isinstance([],Iterable)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Iterable' is not defined
答案:需要导入Iterable模块,执行from collections import Iterable即可
问题: win 系统下,python3+环境下,定义函数时使用非固定参数,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/2.第二模块/2017-10-13/test1.py", line 22, in <module>
user()
File "H:/Python培训/2.第二模块/2017-10-13/test1.py", line 3, in deco
func(args, kwargs)
TypeError: user() takes 0 positional arguments but 2 were given
答案:函数中调用非固定参数时也必须使用*args,**kwargs的写法,错误中的func(args,kwargs)改成func(*args,**kwargs)即可
问题: win 系统下,python3+环境下,调用自定义模块时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/2.第二模块/作业/ATM/atm/bin/atm.py", line 6, in <module>
from core import main
ModuleNotFoundError: No module named 'core'
答案:忘记将模块所在路径加入path,使用sys.path.append将路径加入path即可
问题: win 系统下,python3+环境下,调用自定义模块时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/2.第二模块/作业/ATM/atm/bin/manage.py", line 10, in <module>
main.manage_run()
File "H:\Python培训\2.第二模块\作业\ATM\atm\core\login.py", line 21, in login
logger.managelog(admin_name, "login", "success")
AttributeError: module 'core.logger' has no attribute 'managelog'
答案:调用时写错了函数名,改成正确的即可
问题: win 系统下,python3+环境下,打开一个文件进行操作时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/2.第二模块/作业/ATM/atm/bin/manage.py", line 7, in <module>
from core import main
File "H:\Python培训\2.第二模块\作业\ATM\atm\core\main.py", line 25, in <module>
from core import manage_function
File "H:\Python培训\2.第二模块\作业\ATM\atm\core\manage_function.py", line 8, in <module>
with open("%s/log/manage.log", "r") as f1:
FileNotFoundError: [Errno 2] No such file or directory: '%s/log/manage.log'
答案:忘记定义对%s进行定义,定义%s即可
问题: win 系统下,python3+环境下,写一个还款后计算剩余未还款金额的程序时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/2.第二模块/作业/ATM/atm/bin/atm.py", line 10, in <module>
main.user_run()
File "H:\Python培训\2.第二模块\作业\ATM\atm\core\login.py", line 40, in login
func(*args, **kwargs)
File "H:\Python培训\2.第二模块\作业\ATM\atm\core\main.py", line 49, in user_run
user_choice_list[user_choice]() # 根据选择的功能执行相应的函数
File "H:\Python培训\2.第二模块\作业\ATM\atm\core\main.py", line 23, in repayment
user_function.repayment_function()
File "H:\Python培训\2.第二模块\作业\ATM\atm\core\user_function.py", line 59, in repayment_function
print("本月已还款%s,还需还款%s" % (repayment_sum, repayment_must - repayment_sum))
TypeError: unsupported operand type(s) for -: 'float' and 'str'
答案:两个变量相减时忘记转换数据类型,将一个变量的类型从字符串转成浮点型即可
问题: win 系统下,python3+环境下,调用一个装饰器时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/2.第二模块/作业/ATM/shopping_mall/bin/shopping_mall.py", line 7, in <module>
from core import main
File "H:\Python培训\2.第二模块\作业\ATM\shopping_mall\core\main.py", line 9, in <module>
@auth()
TypeError: auth() missing 1 required positional argument: 'func'
答案:调用装饰器时写成@auth(),调用时应该指向的是该装饰器的内存地址,把@auth后面的括号去掉即可
问题: win 系统下,python3+环境下,在读取一个json文件时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/2.第二模块/作业/ATM/shopping_mall/core/mall_function.py", line 7, in <module>
good_list = json.load(f)
File "C:\Program Files\Python\Python36\lib\json\__init__.py", line 299, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Program Files\Python\Python36\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "C:\Program Files\Python\Python36\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Program Files\Python\Python36\lib\json\decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 66 (char 65)
答案:json文件中的列表少了一个逗号,修改json文件即可
问题: win 系统下,python3+环境下,在使用正则模块进行匹配时,执行后报错信息如下:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 're' is not defined
答案:忘记导入re模块,import re即可
问题: win 系统下,python3+环境下,写一个子类继承一个基类时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/3.第三模块/2017-10-31/class_test3.py", line 27, in <module>
d = Husky("二哈", "2")
File "H:/Python培训/3.第三模块/2017-10-31/class_test3.py", line 20, in __init__
super(Dog, self).__init__(name, age)
TypeError: object.__init__() takes no parameters
答案:super()中的类写成基类,改为子类即可
问题: win 系统下,python3+环境下,写一个子类继承一个基类时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/3.第三模块/2017-10-31/class_test3.py", line 27, in <module>
d = Husky("二哈", "2")
File "H:/Python培训/3.第三模块/2017-10-31/class_test3.py", line 22, in __init__
Dog.add_dog()
TypeError: add_dog() missing 1 required positional argument: 'self'
答案:调用基类的方法时少了self,加上self即可
问题: win 系统下,python3+环境下,写一个程序读取文件时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/3.第三模块/作业/选课系统/bin/course_system.py", line 10, in <module>
main.run()
File "H:\Python培训\3.第三模块\作业\选课系统\core\main.py", line 47, in run
choice_list[choice]()
File "H:\Python培训\3.第三模块\作业\选课系统\core\main.py", line 10, in admin
with open("%s/db/admin.json", "r") as f:
FileNotFoundError: [Errno 2] No such file or directory: '%s/db/admin.json'
答案:路径中的%s忘记赋值,给%s赋值即可
问题: win 系统下,python3+环境下,写一个程序读取文件时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/3.第三模块/作业/选课系统/bin/course_system.py", line 10, in <module>
main.Main.run()
File "H:\Python培训\3.第三模块\作业\选课系统\core\main.py", line 28, in run
choice_list[choice]()
File "H:\Python培训\3.第三模块\作业\选课系统\core\main.py", line 88, in student_login
student_func.StudentFunc.student_func()
File "H:\Python培训\3.第三模块\作业\选课系统\core\student_func.py", line 23, in student_func
choice_list[choice]()
File "H:\Python培训\3.第三模块\作业\选课系统\core\student_func.py", line 48, in choice_classes
with open("%s/db/student.text" % base_dir) as f:
FileNotFoundError: [Errno 2] No such file or directory: 'H:\\Python培训\\3.第三模块\\作业\\选课系统/db/student.text'
答案:忘记指定文件打开模式,指定打开模式即可
问题: win 系统下,python3+环境下,使用setattr设置一个方法,执行后报错信息如下:
Traceback (most recent call last):
2
File "F:/python/反射.py", line 20, in <module>
print(d.dog_talk())
TypeError: talk() missing 2 required positional arguments: 'self' and 'talk'
答案:dog_talk方法需要传入两个值,其中的self也需要传值,为方法传入对象本身和另外一个值即可。
问题: win 系统下,python3+环境下,写一个服务端程序,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/3.第三模块/2017-11-08/socket_test_server.py", line 12, in <module>
print("%s连接服务端成功..." % address)
TypeError: not all arguments converted during string formatting
答案:conn, address = server.accept()中的address返回的是一个元组,故无法赋值给%s,只要将address中的一个项赋值给%s即可。
问题: win 系统下,python3+环境下,调用一个类的静态方法时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/3.第三模块/作业/简单FTP_test/FTP_client.py", line 58, in <module>
ClientFunc.client_func()
File "H:/Python培训/3.第三模块/作业/简单FTP_test/FTP_client.py", line 18, in client_func
getattr(ClientFunc, choice_list[choice])()
TypeError: upload_file() missing 1 required positional argument: 'self'
答案:静态方法中的self没有去掉,所以需要传值,去掉self即可。
问题: win 系统下,python3+环境下,从服务端下载一个文件时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/3.第三模块/作业/简单FTP_test/FTP_client.py", line 184, in <module>
ClientFunc.client_func()
File "H:/Python培训/3.第三模块/作业/简单FTP_test/FTP_client.py", line 58, in client_func
getattr(ClientFunc, choice_list[choice])()
File "H:/Python培训/3.第三模块/作业/简单FTP_test/FTP_client.py", line 106, in download_file
file_list = pickle.loads(msg) # 打印FTP Server上的文件列表
_pickle.UnpicklingError: invalid load key, '\xe4'.
答案:下载的文件已经存在,所以报错。
问题: win 系统下,python3+环境下,写一个程序计算字符串的hash值,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/4.第四模块/作业/高级FTP/FTP_Server/bin/FTP_server.py", line 12, in <module>
main.ServerFunc.run()
File "H:\Python培训\4.第四模块\作业\高级FTP\FTP_Server\core\main.py", line 34, in run
getattr(ServerFunc, choice_list[choice])()
File "H:\Python培训\4.第四模块\作业\高级FTP\FTP_Server\core\main.py", line 18, in run_admin
admin_func.AdminFunc.admin_func()
File "H:\Python培训\4.第四模块\作业\高级FTP\FTP_Server\core\admin_func.py", line 90, in admin_func
go_back = getattr(AdminFunc, choice_list[choice])()
File "H:\Python培训\4.第四模块\作业\高级FTP\FTP_Server\core\admin_func.py", line 22, in add_user
user_info["pw"] = hashlib.sha256(password).hexdigest() # 密码加密并存入字典
TypeError: Unicode-objects must be encoded before hashing
答案:计算hash时传入的必须是byte类型,把字符串encode下即可解决
问题: win 系统下,python3+环境下,写一个程序使用socket发送字典时,执行后报错信息如下:
Exception happened during processing of request from ('127.0.0.1', 56173)
Traceback (most recent call last):
File "C:\Program Files\Python\Python36\lib\socketserver.py", line 639, in process_request_thread
self.finish_request(request, client_address)
File "C:\Program Files\Python\Python36\lib\socketserver.py", line 361, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Program Files\Python\Python36\lib\socketserver.py", line 696, in __init__
self.handle()
File "H:\Python培训\4.第四模块\作业\高级FTP\FTP_Server\core\server_func.py", line 36, in handle
if self.data["REQ"] == "check_user":
TypeError: byte indices must be integers or slices, not str
答案:socket只能发送byte类型,把字典使用pickle进行序列化后即可发送
问题: win 系统下,python3+环境下,写一个程序使用socket发送字符串时,执行后报错信息如下:
Exception happened during processing of request from ('127.0.0.1', 53055)
Traceback (most recent call last):
用户ccc正在尝试上传文件...
File "C:\Users\MAIMAI\AppData\Local\Programs\Python\Python36\lib\socketserver.py", line 639, in process_request_thread
self.finish_request(request, client_address)
File "C:\Users\MAIMAI\AppData\Local\Programs\Python\Python36\lib\socketserver.py", line 361, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Users\MAIMAI\AppData\Local\Programs\Python\Python36\lib\socketserver.py", line 696, in __init__
self.handle()
File "F:\python\高级FTP\FTP_Server\core\server_func.py", line 166, in handle
getattr(self, data["REQ"])(data)
File "F:\python\高级FTP\FTP_Server\core\server_func.py", line 84, in put
self.request.sendall("ERROR:磁盘已满!无法上传文件!")
TypeError: a bytes-like object is required, not 'str'
答案:socket只能发送byte类型,把字符串encode下即可解决
问题: win 系统下,python3+环境下,写一个程序使用socket发送数字时,执行后报错信息如下:
Exception happened during processing of request from ('127.0.0.1', 54763)
正在接收文件....
Traceback (most recent call last):
File "C:\Program Files\Python\Python36\lib\socketserver.py", line 639, in process_request_thread
self.finish_request(request, client_address)
File "C:\Program Files\Python\Python36\lib\socketserver.py", line 361, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Program Files\Python\Python36\lib\socketserver.py", line 696, in __init__
self.handle()
File "H:\Python培训\4.第四模块\作业\高级FTP\FTP_Server\core\server_func.py", line 196, in handle
getattr(self, data["REQ"])(data)
File "H:\Python培训\4.第四模块\作业\高级FTP\FTP_Server\core\server_func.py", line 82, in put
self.receive_file(f, no_extension_name, file_name, file_size, file_md5)
File "H:\Python培训\4.第四模块\作业\高级FTP\FTP_Server\core\server_func.py", line 156, in receive_file
self.request.sendall(size)
TypeError: a bytes-like object is required, not 'int'
答案:socket也无法发送int类型的数字,使用pickle将数字序列化后即可发送
问题: win 系统下,python3+环境下,写一个程序使用paramiko模块通过SSH连接远程主机执行命令时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/4.第四模块/2017-11-25/paramiko_test.py", line 10, in <module>
stdout, stderr = ssh.exec_commond("df")
AttributeError: 'SSHClient' object has no attribute 'exec_commond'
答案:调用的方法写错了,ssh.exec_commond改为ssh.exec_command即可
问题: win 系统下,python3+环境下,写一个程序使用paramiko模块通过SSH连接远程主机执行命令时,执行后报错信息如下:
Traceback (most recent call last):
File "F:/python/2017-11-25/paramiko_sshclient_key.py", line 9, in <module>
ssh.connect(hostname="192.168.3.25", port=22, username="fangyu", pkey=rsa_key)
File "C:\Users\MAIMAI\AppData\Local\Programs\Python\Python36\lib\site-packages\paramiko\client.py", line 402, in connect
self, server_hostkey_name, server_key
File "C:\Users\MAIMAI\AppData\Local\Programs\Python\Python36\lib\site-packages\paramiko\client.py", line 768, in missing_host_key
'Server {!r} not found in known_hosts'.format(hostname)
paramiko.ssh_exception.SSHException: Server '192.168.3.25' not found in known_hosts
答案:没有将本机加入远程主机的know_hosts,使用ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())自动将本机加入远程主机的know_hosts即可
问题: win 系统下,python3+环境下,写一个程序启动一个进程时,执行后报错信息如下:
Traceback (most recent call last):
File "F:/python/2017-12-02/进程Manager.py", line 23, in <module>
p.join()
File "C:\Users\MAIMAI\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 120, in join
assert self._popen is not None, 'can only join a started process'
AssertionError: can only join a started process
答案:设置好进程之后忘记启动了,使用start()启动进程即可解决
问题: win 系统下,python3+环境下,写一个服务端接受客户端的连接程序,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/4.第四模块/2017-12-04/select_server.py", line 23, in <module>
print("来自%s的新连接..." % address)
TypeError: not all arguments converted during string formatting
答案:conn, address = server.accept()返回的address为一个元组,取元组的第一项即为IP地址
问题: win 系统下,python3+环境下,写一个正则表达式,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/5.第五模块/作业/主机管理系统(RabbitMQ实现)/HostManage_Client/bin/client.py", line 12, in <module>
main.run()
File "H:\Python培训\5.第五模块\作业\主机管理系统(RabbitMQ实现)\HostManage_Client\core\main.py", line 29, in run
manage.manage_cmd()
File "H:\Python培训\5.第五模块\作业\主机管理系统(RabbitMQ实现)\HostManage_Client\core\manage_func.py", line 61, in manage_cmd
getattr(self, func)(cmd)
File "H:\Python培训\5.第五模块\作业\主机管理系统(RabbitMQ实现)\HostManage_Client\core\manage_func.py", line 14, in run
ip_list = re.findall("\d+.\d+.\d+.\d+")
TypeError: findall() missing 1 required positional argument: 'string'
答案:正则匹配时少了匹配对象,添加上要进行匹配的字符串即可。
问题: win 系统下,python3+环境下,使用pika模块接收RabbitMQ队列中的消息,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/5.第五模块/2017-12-13/简单rabbitmq_receive.py", line 19, in <module>
channel.basic_consume(callback)
TypeError: basic_consume() missing 1 required positional argument: 'queue'
答案:缺少了queue名参数,添加queue=“队列名”即可。
问题: win 系统下,python3+环境下,使用pika模块接收RabbitMQ队列中的消息,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/5.第五模块/2017-12-13/简单rabbitmq_receive.py", line 19, in <module>
channel.basic_consume(callback, queue="1")
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\blocking_connection.py", line 1551, in basic_consume
consumer_callback=consumer_callback)
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\blocking_connection.py", line 1614, in _basic_consume_impl
self._flush_output(ok_result.is_ready)
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\blocking_connection.py", line 1250, in _flush_output
*waiters)
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\blocking_connection.py", line 455, in _flush_output
self._impl.ioloop.poll()
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\select_connection.py", line 245, in poll
self._poller.poll()
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\select_connection.py", line 718, in poll
self._dispatch_fd_events(fd_event_map)
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\select_connection.py", line 625, in _dispatch_fd_events
handler(fileno, events)
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\base_connection.py", line 395, in _handle_events
self._handle_read()
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\base_connection.py", line 449, in _handle_read
self._on_data_available(data)
File "C:\Program Files\Python\Python36\lib\site-packages\pika\connection.py", line 1938, in _on_data_available
self._process_frame(frame_value)
File "C:\Program Files\Python\Python36\lib\site-packages\pika\connection.py", line 2059, in _process_frame
if self._process_callbacks(frame_value):
File "C:\Program Files\Python\Python36\lib\site-packages\pika\connection.py", line 2040, in _process_callbacks
frame_value) # Args
File "C:\Program Files\Python\Python36\lib\site-packages\pika\callback.py", line 60, in wrapper
return function(*tuple(args), **kwargs)
File "C:\Program Files\Python\Python36\lib\site-packages\pika\callback.py", line 92, in wrapper
return function(*args, **kwargs)
File "C:\Program Files\Python\Python36\lib\site-packages\pika\callback.py", line 236, in process
callback(*args, **keywords)
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\blocking_connection.py", line 1316, in _on_channel_closed
method.reply_text)
pika.exceptions.ChannelClosed: (404, "NOT_FOUND - no queue '1' in vhost '/'")
答案:使用了一个不存在的queue名,配置正确的queue名即可。
问题: win 系统下,python3+环境下,使用pika模块连接远程主机上的RabbitMQ时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/5.第五模块/2017-12-15/rabbitmq_test.py", line 6, in <module>
conn = pika.BlockingConnection(pika.ConnectionParameters("192.168.0.231", 5672, "/", user))
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\blocking_connection.py", line 374, in __init__
self._process_io_for_connection_setup()
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\blocking_connection.py", line 414, in _process_io_for_connection_setup
self._open_error_result.is_ready)
File "C:\Program Files\Python\Python36\lib\site-packages\pika\adapters\blocking_connection.py", line 466, in _flush_output
raise maybe_exception
pika.exceptions.ProbableAuthenticationError: (403, 'ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.')
答案:RabbitMQ默认的guest用户无法用于远程登录,在RabbitMQ中添加一个新用户即可。
问题: win 系统下,python3+环境下,连接远程主机上的Redis时,执行后报错信息如下:
Traceback (most recent call last):
File "C:\Program Files\Python\Python36\lib\site-packages\redis\connection.py", line 484, in connect
sock = self._connect()
File "C:\Program Files\Python\Python36\lib\site-packages\redis\connection.py", line 541, in _connect
raise err
File "C:\Program Files\Python\Python36\lib\site-packages\redis\connection.py", line 529, in _connect
sock.connect(socket_address)
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files\Python\Python36\lib\site-packages\redis\client.py", line 667, in execute_command
connection.send_command(*args)
File "C:\Program Files\Python\Python36\lib\site-packages\redis\connection.py", line 610, in send_command
self.send_packed_command(self.pack_command(*args))
File "C:\Program Files\Python\Python36\lib\site-packages\redis\connection.py", line 585, in send_packed_command
self.connect()
File "C:\Program Files\Python\Python36\lib\site-packages\redis\connection.py", line 489, in connect
raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 10061 connecting to 192.168.0.231:6379. 由于目标计算机积极拒绝,无法连接。.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files\Python\Python36\lib\site-packages\redis\connection.py", line 484, in connect
sock = self._connect()
File "C:\Program Files\Python\Python36\lib\site-packages\redis\connection.py", line 541, in _connect
raise err
File "C:\Program Files\Python\Python36\lib\site-packages\redis\connection.py", line 529, in _connect
sock.connect(socket_address)
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "H:/Python培训/5.第五模块/2017-12-14/连接redis.py", line 6, in <module>
r.set("a", "aa")
File "C:\Program Files\Python\Python36\lib\site-packages\redis\client.py", line 1171, in set
return self.execute_command('SET', *pieces)
File "C:\Program Files\Python\Python36\lib\site-packages\redis\client.py", line 673, in execute_command
connection.send_command(*args)
File "C:\Program Files\Python\Python36\lib\site-packages\redis\connection.py", line 610, in send_command
self.send_packed_command(self.pack_command(*args))
File "C:\Program Files\Python\Python36\lib\site-packages\redis\connection.py", line 585, in send_packed_command
self.connect()
File "C:\Program Files\Python\Python36\lib\site-packages\redis\connection.py", line 489, in connect
raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 10061 connecting to 192.168.0.231:6379. 由于目标计算机积极拒绝,无法连接。.
答案:Redis默认无法支持远程登录,只能本地登录,修改Reids的配置文件redis.conf中的bind 127.0.0.1为bind 0.0.0.0或你的IP即可。
问题: win 系统下,python3+环境下,使用SQLAlchemy在MySQL中写入数据时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/5.第五模块/2018-01-02/orm查询数据.py", line 20, in <module>
data = Session.query(Student).filter_by(name="gougou").first()
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\orm\query.py", line 2778, in first
ret = list(self[0:1])
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\orm\query.py", line 2570, in __getitem__
return list(res)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\orm\query.py", line 2878, in __iter__
return self._execute_and_instances(context)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\orm\query.py", line 2899, in _execute_and_instances
close_with_result=True)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\orm\query.py", line 2908, in _get_bind_args
**kw
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\orm\query.py", line 2890, in _connection_from_session
conn = self.session.connection(**kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\orm\session.py", line 1025, in connection
bind = self.get_bind(mapper, clause=clause, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\orm\session.py", line 1387, in get_bind
', '.join(context)))
sqlalchemy.exc.UnboundExecutionError: Could not locate a bind configured on mapper Mapper|Student|student, SQL expression or this Session
答案:在实例化sessionmaker时忘记bind=engine了。
问题: win 系统下,python3+环境下,使用SQLAlchemy在MySQL中写入数据时,执行后报错信息如下:
Traceback (most recent call last):
File "H:/Python培训/5.第五模块/2018-01-03/orm插入多条记录.py", line 17, in <module>
Base.metadata.create_all()
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\schema.py", line 4000, in create_all
bind = _bind_or_error(self)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\base.py", line 636, in _bind_or_error
raise exc.UnboundExecutionError(msg)
sqlalchemy.exc.UnboundExecutionError: MetaData object is not bound to an Engine or Connection. Execution can not proceed without a database to execute against.
答案:Base.metadata.create_all()忘记加engine,改成Base.metadata.create_all(engine)即可。
问题: win 系统下,python3+环境下,使用SQLAlchemy在MySQL中创建表时,执行后报错信息如下:
Traceback (most recent call last):
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 2444, in visit_create_table
and not first_pk)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 245, in process
return obj._compiler_dispatch(self, **kwargs)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\visitors.py", line 81, in _compiler_dispatch
return meth(self, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 2475, in visit_create_column
first_pk=first_pk
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\dialects\mysql\base.py", line 1131, in get_column_specification
column.type, type_expression=column)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 293, in process
return type_._compiler_dispatch(self, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\visitors.py", line 81, in _compiler_dispatch
return meth(self, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 2914, in visit_string
return self.visit_VARCHAR(type_, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\dialects\mysql\base.py", line 1538, in visit_VARCHAR
self.dialect.name)
sqlalchemy.exc.CompileError: VARCHAR requires a length on dialect mysql
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "H:/Python培训/5.第五模块/作业/堡垒机/Fortress/bin/fortress.py", line 10, in <module>
from core import main
File "H:\Python培训\5.第五模块\作业\堡垒机\Fortress\core\main.py", line 4, in <module>
from core import tables
File "H:\Python培训\5.第五模块\作业\堡垒机\Fortress\core\tables.py", line 18, in <module>
Base.metadata.create_all(engine)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\schema.py", line 4004, in create_all
tables=tables)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\engine\base.py", line 1940, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\engine\base.py", line 1549, in _run_visitor
**kwargs).traverse_single(element)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\visitors.py", line 121, in traverse_single
return meth(obj, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\ddl.py", line 757, in visit_metadata
_is_metadata_operation=True)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\visitors.py", line 121, in traverse_single
return meth(obj, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\ddl.py", line 791, in visit_table
include_foreign_key_constraints=include_foreign_key_constraints
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\engine\base.py", line 948, in execute
return meth(self, multiparams, params)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\ddl.py", line 68, in _execute_on_connection
return connection._execute_ddl(self, multiparams, params)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\engine\base.py", line 1003, in _execute_ddl
if not self.schema_for_object.is_default else None)
File "<string>", line 1, in <lambda>
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\elements.py", line 442, in compile
return self._compiler(dialect, bind=bind, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\ddl.py", line 26, in _compiler
return dialect.ddl_compiler(dialect, self, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 219, in __init__
self.string = self.process(self.statement, **compile_kwargs)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 245, in process
return obj._compiler_dispatch(self, **kwargs)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\visitors.py", line 81, in _compiler_dispatch
return meth(self, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 2455, in visit_create_table
(table.description, column.name, ce.args[0])
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\util\compat.py", line 203, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\util\compat.py", line 186, in reraise
raise value.with_traceback(tb)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 2444, in visit_create_table
and not first_pk)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 245, in process
return obj._compiler_dispatch(self, **kwargs)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\visitors.py", line 81, in _compiler_dispatch
return meth(self, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 2475, in visit_create_column
first_pk=first_pk
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\dialects\mysql\base.py", line 1131, in get_column_specification
column.type, type_expression=column)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 293, in process
return type_._compiler_dispatch(self, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\visitors.py", line 81, in _compiler_dispatch
return meth(self, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\sql\compiler.py", line 2914, in visit_string
return self.visit_VARCHAR(type_, **kw)
File "C:\Program Files\Python\Python36\lib\site-packages\sqlalchemy\dialects\mysql\base.py", line 1538, in visit_VARCHAR
self.dialect.name)
sqlalchemy.exc.CompileError: (in table 'tesetable', column 'name'): VARCHAR requires a length on dialect mysql
答案:表的字符型字段创建时没有指定长度,为该字段指定长度即可。