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

答案:表的字符型字段創建時沒有指定長度,為該字段指定長度即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM