ValueError: Слишком много значений для распаковки в Python. Это ошибка сети? - PullRequest
0 голосов
/ 25 апреля 2019

Я получаю эту ошибку Python при попытке запустить скрипт ковалентной стыковки. Однако, если я подключен к новой сети, она запускается один раз, но выдает ту же ошибку при втором запуске. Я понятия не имею, если это проблема с сетью или проблема с питоном.

Я удалил сетевой драйвер для Windows 7 64 bit и снова установил его. Я скачал opencv и запустил cv.pyd. Я использую 32-битную версию Python 2.7 с установленным openbabel

C:\Users\najum.najumPC>C:\adCovalentDockResidue\adcovalent\prepareCovalent.py --ligand NMC.mol2 --ligindices 1,2 --receptor protein.pdb --residue B:CYS:199 --outputfile ligcovalent_NMC.pdb
Processing residue B:CYS:199
[start] output filename is: ligcovalent_NMC.pdb
Traceback (most recent call last):


File "C:\adCovalentDockResidue\adcovalent\prepareCovalent.py", line 1318, in < module>  x = CovalentDockingMaster()

File "C:\adCovalentDockResidue\adcovalent\prepareCovalent.py", line 870, in __init__self.start()

File "C:\adCovalentDockResidue\adcovalent\prepareCovalent.py", line 1261, in start self.processResidues()

File "C:\adCovalentDockResidue\adcovalent\prepareCovalent.py", line 1297, in processResidue aligner = self.x =CovalentDockingMaker(**self.alignerArgs)

File "C:\adCovalentDockResidue\adcovalent\prepareCovalent.py", line 229, in _init__self.initResidue()

File "C:\adCovalentDockResidue\adcovalent\prepareCovalent.py", line 266, in initResiduechain, res = string.split(":")
ValueError: too many values to unpack

1 Ответ

0 голосов
/ 25 апреля 2019

Нет такой вещи, как ошибка сети в вашем случае ...

Если вы анализируете получаемый вами Traceback, он сообщает вам, что код не работает в строке 266 prepareCovalent.py при выполнении initResiduechain, res = string.split(":").

Что это значит?

Это означает, что если у нас есть образец тестовой строки

test = "a:b:c:d"

при работе test.split(":") вернет 4 значения! (а именно "a", "b", "c", "d")

Поэтому пытаюсь сделать:

x, y = test.split(":")

приведет к ошибке, которую вы испытываете, знаменитое слишком много значений для распаковки error!

В противном случае выполнение x, y, z, t = test.split(":") будет успешным, и вы не увидите никаких ошибок.

В любом случае, я предлагаю вам пересмотреть способ выполнения этой операции разбиения, учитывая полезный список, который будет инкапсулировать все возвращаемые значения, например:

l = []
l = test.split(":")

Это будет работать гладко, и вы сможете получить доступ ко всем отдельным элементам просто с помощью индексации:

l[0]  # OUPUTS "a"
l[1]  # OUPUTS "b"
l[2]  # OUPUTS "c"
l[3]  # OUPUTS "d"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...