問題: 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
答案:表的字符型字段創建時沒有指定長度,為該字段指定長度即可。